2011-07-28 6 views
1

Erm ... 나는 이것을 위해 웹을 철저히 검색하여 만족할만한 답변을 찾을 수 없다고 약속합니다.> <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

관련 문제