Python 监控应用程序

1 投票
1 回答
1153 浏览
提问于 2025-04-16 22:27

呃... 我保证我在网上找了很多资料,但还是没找到满意的答案,所以>.<

我想为我的Python应用程序做一个“控制器”,也就是说,它应该先执行,然后启动服务器,等待接收退出信号,如果需要的话,还能重启脚本。

这段代码有点乱,但这是我目前的成果... 它总是返回一个无法识别的退出信号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 个回答

1

正如这里所说的,os.spawnv这个方法已经不推荐使用了,你应该使用subprocess模块。

另外,如果你总是得到1的返回值而没有启动任何进程,可能是因为你给服务器代码的路径不对,或者服务器部分的代码有问题。那如果你手动启动服务器,会发生什么呢?

撰写回答