1

えーと...私はこれをウェブで徹底的に検索し、満足のいく答えを見つけることができなかったと約束します>。<

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()

厄介なコードでごめんなさい!(= ^、^ =)

4

1 に答える 1

1

ここで説明するように、os.spawnvは非推奨のメソッドであるため、サブプロセスモジュールを使用する必要があります。

これとは別に、常に1が返され、プロセスが生成されない場合は、サーバーコードへのパスが間違っているか、サーバー部分のコードが間違っている可能性があります。サーバーを手動で起動するとどうなりますか?

于 2011-07-28T18:34:42.727 に答える