Django应用程序在Apache上部署时停止工作(子进程运行,但失败)

时间:2010-09-13 19:40:03

标签: python django apache subprocess mod-wsgi

我的Django应用程序在Apache(使用mod_wsgi)上部署时停止工作。 它在Windows服务器上运行。该应用程序调用名为“rex”(Alchemy Remote Executor)的Windows可执行文件,该文件在另一个远程Windows框中执行命令。

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

这一切在开发中都很好,但是当使用mod_wsgi在Apache上部署时,它不起作用! “rex”程序仍然运行,但它没有做到这一点,并给出以下消息:

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

因此,“rex”程序正在运行,但是当它从Apache生成时,它无法建立所需的连接。看起来Apache似乎在某种程度上关闭了“rex.exe”之前建立的连接!

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

部署到Windows服务时,如果您在开发时以不同的用户身份运行,并以真实用户身份运行它,那么这一直是一个挑战。我编写了一个更新程序,它作为一项服务运行,遇到文件权限问题,我遇到了各种各样的麻烦。您可以尝试以运行Apache服务的同一用户身份登录Windows,并从那里尝试rex可执行文件吗?运气好的话,你可以让rex在那里失败,你可以在那里进行交互,并且可以对其进行故障排除。

但基本的想法是在apache服务之外复制失败,然后在服务的权限下做任何需要让这个东西运行,并且你已经修复了。可能是您的rex程序正在尝试读取或写入没有权限的文件(例如配置文件?)。