【问题标题】:Django app stops working when deployed on Apache ( subprocess runs, but fails )Django 应用程序在 Apache 上部署时停止工作(子进程运行,但失败)
【发布时间】:2011-04-11 20:29:17
【问题描述】:

我的 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”建立的连接!

有什么想法吗?

【问题讨论】:

    标签: python django apache subprocess mod-wsgi


    【解决方案1】:

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

    但是基本的想法是在 apache 服务之外复制故障,然后做任何需要的事情来让这个东西在服务的权限下运行,然后你就解决了。可能是您的 rex 程序正在尝试读取或写入它没有权限的文件(例如配置文件?)。

    【讨论】:

    • 感谢您的回答,但我认为这与权限无关。 Apache 服务以“系统用户帐户”或其他方式运行(如何以该用户身份登录?)。我确实尝试在自己的帐户下运行 Apache,并且得到了相同的结果。我认为这与网络连接有关——从 Apache 产生的进程无法保持连接打开。对此类流程是否有限制?是否有阻塞端口?
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2010-10-04
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2018-10-18
    • 2020-08-03
    • 2017-08-29
    相关资源
    最近更新 更多