Django应用在Apache上部署后停止工作(子进程运行但失败)
我的Django应用在用Apache(配合mod_wsgi)部署后就停止工作了。它运行在Windows服务器上。这个应用会调用一个叫“rex”的Windows可执行文件(Alchemy Remote Executor),它可以在另一台远程Windows机器上执行命令。
process = subprocess.Popen( ['rex',ip,usr,pwd,command], stdout=subprocess.PIPE, universal_newlines=True )
out, err = process.communicate()
在开发环境中一切都运行得很好,但在用Apache和mod_wsgi部署后,它就不行了!“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
在把程序部署到Windows服务时,如果你用的用户和开发时用的用户不一样,这总是个挑战。我在写一个作为服务运行的更新程序时遇到了各种麻烦,主要是文件权限的问题。你可以试着用运行Apache服务的同一个用户登录Windows,然后从那里运行你的rex可执行文件吗?希望这样你能在交互式环境中找到rex出错的地方,方便你进行排查。
基本的思路是,在Apache服务外重现这个错误,然后做一些必要的调整,让这个程序在服务的权限下正常运行,这样问题就解决了。可能是你的rex程序试图读取或写入一些文件(比如配置文件),但它没有权限去做这些操作。