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

0 投票
1 回答
582 浏览
提问于 2025-04-16 04:06

我的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程序试图读取或写入一些文件(比如配置文件),但它没有权限去做这些操作。

撰写回答