Я использую apache, Django и wsgi. Я также использую другую программу под названием SAS для статистического анализа. Просто чтобы дать вам некоторый контекст. Моя конечная цель заключается в том, что когда клиент нажимает кнопку «Отправить» в форме, написанной на django, вызывается соответствующий сценарий sas (через сценарий python wsgi), который выполняет вычисления на сервере, а затем перенаправляет клиента на выходная страница.
У меня есть базовый скрипт под названием test5.py
. Это выглядит так:
import os
import subprocess
def application(environ, start_response):
status = '200 OK'
output = 'Running External Program!'
f = open("C:\Documents and Settings\eric\Desktop\out.txt", 'a')
f.write('hi')
f.close()
#os.system(r'start "C:\Program Files\SAS92\SASFoundation\9.2\sas.exe"')
#subprocess.call([r'C:\Program Files\SAS92\SASFoundation\9.2\sas.exe'])
#os.startfile(r'C:\Program Files\SAS92\SASFoundation\9.2\sas.exe')
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
#start_response('301 Redirect', [('Location', 'http://myserver/reports'),])
start_response(status, response_headers)
return [output]
Итак, что происходит, так это то, что файл out.txt
действительно создается, и в него записывается hi
. Это довольно круто. Первые 3 прокомментированные строки были 3 попытками того же скрипта также вызвать sas.exe
, который живет на сервере. Я просто пытаюсь заставить любой .exe
работать прямо сейчас, поэтому вызов paint или wordpad будет в порядке. Однако эти строки, похоже, не выполняются в контексте wsgi
. Если я просто загружу командную строку Python, я смогу нормально выполнить .exes
. Также последний комментарий, кажется, работает правильно при перенаправлении. Я не уверен, нужно ли мне настраивать apache для добавления исполняемых файлов. Пожалуйста, простите меня, если я неправильно использую термины. Я все еще новичок во всем этом.
Спасибо
Привет, Пауло,
Я пытался заглянуть в ваш последний комментарий. Я немного смущен относительно того, что именно я ищу или как это искать. Вот некоторая информация, которую я собрал. Кстати, я работаю на Windows XP и использую Apache 2.2.
Мой apache установлен для всех пользователей, так как в regedit переменная ServerRoot находится в разделе HKEY_LOCAL_MACHINE (http://httpd.apache.org/docs/2.2/platform/windows.html). Также я считаю, что SAS установлен под всеми пользователями. Я проверил это, когда моя коллега вошла в систему, используя ее логин, и у меня все еще был доступ. Хотя я не уверен, что это достаточный тест.
Журнал, который я получаю, когда запускаю wsgi, выглядит следующим образом. Я не уверен, имеет ли значение, что процесс пуст.
[Пн, 20 августа, 10:33:17 2012] [информация] [клиент 10.60.8.71] mod_wsgi (pid=5980, process='', application='..com|/test5'): перезагружается WSGI-скрипт 'C:/ Сайты/cprm/pyscripts/test5.wsgi'.
Также я попробовал трюк с .bat по ссылке, которую я разместил в комментарии, который я разместил ранее, но безрезультатно. Я сделал простой пакетный файл, который просто повторяет «привет», и поместил его в тот же каталог, где живут мои сценарии wsgi. Я чувствую, что там не должно быть проблем с доступом, но я могу ошибаться. Я также только что попытался вызвать простой скрипт Python, используя подпроцесс, просто для проверки. Тоже ничего не произошло.
Также, чтобы показать вам, мой файл httpd.conf выглядит так:
AllowOverride Нет Опции Нет Заказать разрешить, запретить Разрешить от всех
WSGIScriptAlias /test1 "C:/sites/cprm/pyscripts/test1.wsgi" WSGIScriptAlias /test2 "C:/sites/cprm/pyscripts/test2.py" WSGIScriptAlias /test3 C:/sites/cprm/pyscripts/test3.py WSGIScriptAlias /test4 "C:/sites/cprm/pyscripts/test4.py" WSGIScriptAlias /test5 "C:/sites/cprm/pyscripts/test5.wsgi" WSGIScriptAlias / "C:/sites/cprm/wsgi.py"
Эта информация полезна или нет? Кроме того, я ищу конкретную переменную среды или что-то в этом роде?
Еще раз спасибо