Сторожевое приложение Python - PullRequest
1 голос
/ 28 июля 2011

Э-э ... я обещаю, что я тщательно искал в интернете это и не смог найти удовлетворительного ответа, поэтому>. <</p>

Я пытаюсь создать «контроллер» для моего приложения на 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 Ответ

1 голос
/ 28 июля 2011

Как описано здесь , os.spawnv является устаревшим методом, вы должны использовать модуль subprocess .

Кроме этого, если вы всегда возвращали 1 и процесс не запускался, возможно, это из-за неверного пути к коду сервера или неверного кода для серверной части. Что произойдет, если вы запустите сервер вручную?

...