2010-09-13 67 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

相關問題