2010-09-13 66 views
0

我的Django应用程序停止在Apache(与mod_wsgi的)部署工作时。 它在Windows服务器上运行。在Windows应用程序调用可执行文件,称为其上的另一个远程的Windows中执行命令“雷克斯”(炼金术远程执行程序)。Django应用程序停止在Apache部署工作时(子运行,但失败)

process = subprocess.Popen(['rex',ip,usr,pwd,command], stdout=subprocess.PIPE, universal_newlines=True) 
out, err = process.communicate() 

这一切在开发中都可以正常工作,但是当使用mod_wsgi在Apache上部署时,它不起作用!在“雷克斯”的程序仍然运行,但是它不能做的事情,并给出了以下消息:

Failed to execute the program: A specified logon session does not exist. It may already have been terminated. 

因此,“雷克斯”的程序正在运行,但它是不能够进行必要的连接或它是从Apache产生的。它看起来像Apache在完成之前以某种方式关闭“rex.exe”所做的连接!

任何想法?

回答

0

部署到比你下运行,当你在开发,运行它作为一个真正的用户正在运行作为不同的用户一个窗口服务时,它总是一个挑战。在写这篇更新程序时,我遇到了各种各样的麻烦,它以服务的方式运行,从而导致文件权限问题。你可以尝试以与运行Apache服务的用户相同的身份登录到Windows,并从那里尝试rex可执行文件?幸运的是,您可能会让rex在那里出现交互失败的情况,并且可以排除故障。

但其基本理念,是复制Apache服务以外的失败,然后做相应处理即可让这件事运行,而下服务的权限,你固定。这可能是因为你的rex程序试图读取或写入文件(比如配置文件?),它没有权限。

+0

谢谢您的回答,但我不认为这是有关权限。 Apache服务以“系统用户帐户”或其他方式运行(如何以该用户身份登录?)。我曾尝试在自己的帐户下运行Apache,并得到了相同的结果。我认为这与网络连接有关 - 从Apache产生的进程无法保持连接的开放。这些流程是否受到限制?有阻塞的端口吗? – 2010-09-14 02:24:25

相关问题