2011-07-28 63 views
1

Erm ...我保证我彻底搜索了网络,找不到满意的答案。 <Python看门狗应用程序

我想为我的python应用程序做一个'控制器',我的意思是,它应该被执行,然后产生服务器,等待提取出口信号,如果有必要,重新启动脚本。

这段代码很杂乱,但这就是我迄今为止所做的...它始终以无法识别的exitSignal 1返回,甚至不会产生服务器进程!有人可以给我点光吗?

#Server controller version 0.1 
import os 
import time 
from datetime import datetime 

Log = file("C:/Users/Admin/Desktop/Python/Server/WIP.log", 'w') 

def runServer(): 
    exitSignal = os.spawnv(os.P_WAIT, 'C:/Python2.7/python.exe', ['python.exe',   'C:/Users/Admin/Desktop/Python/Server/WIP.py']) 
    print str(datetime.today())+" - Server started" 
    Log.write("\n"+str(datetime.today())+" - Server started") 

    if exitSignal == "0": 
     print str(datetime.today())+" - Server exited succesfully." 
     Log.write("\n"+str(datetime.today())+" - Server exited succesfully.") 

    elif exitSignal == "10": 
     print str(datetime.today())+" - Rebooting server immediately." 
     Log.write("\n"+str(datetime.today())+" - Rebooting server immediately.") 
     runServer() 

    elif exitSignal == "11": 
     print str(datetime.today())+" - Rebooting server in 5 minutes." 
     Log.write("\n"+str(datetime.today())+" - Rebooting server in 5 minutes.") 
     time.sleep(300) 
     runServer() 
     print str(datetime.today())+" - Server rebooted." 
     Log.write("\n"+str(datetime.today())+" - Server rebooted.") 

    else: 
     print str(datetime.today())+" - Unrecognized exitSignal code: %s" % str(exitSignal) 
     Log.write("\n"+str(datetime.today())+" - Unrecognized exitSignal code: %s" % str(exitSignal)) 

if __name__ == "__main__": 
    print str(datetime.today())+" - Controller started." 
    Log.write("\n"+str(datetime.today())+" - Controller started") 
    runServer() 

对不起,乱码! (= ^,^ =)

回答

1

由于described here,os.spawnv是一个不推荐的方法,您应该使用subprocess模块。

除此之外,如果您总是返回1并且没有进程产生,可能是由于到服务器代码的错误路径或服务器部分的错误代码。如果您手动启动服务器会发生什么情况?

+0

服务器运行平稳,但我要尝试子进程模块,谢谢:) – Fabio