我正在运行 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
位于服务器上。我只是想让 any.exe
现在开始工作,所以调用油漆或写字板就可以了。然而,这些行似乎并没有在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 时得到的日志如下。我不确定该过程是否为空是否重要。
[2012 年 8 月 20 日星期一 10:33:17] [info] [client 10.60.8.71] mod_wsgi (pid=5980, process='', application='..com|/test5'): 重新加载 WSGI 脚本 'C:/站点/cprm/pyscripts/test5.wsgi'。
我还尝试了我在之前发布的评论中发布的链接中的 .bat 技巧,但无济于事。我制作了一个简单的批处理文件,它只回显“hi”并将其放在我的 wsgi 脚本所在的同一目录中。我觉得那里应该没有访问问题,但我可能弄错了。我也只是尝试使用 subprocess 调用一个简单的 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"
这些信息是否有用?另外,我是在寻找特定的环境变量还是什么?
再次感谢