4

チェリーピーに基づいてサーバーを作成しましたが、実行に長時間 (1 分以上) かかる反復タスクがあります。サーバーをシャットダウンする必要があるまでは、これで問題ありません。その後、スレッドが終了するのを永遠に待ちます。

サーバーのシャットダウン時にスレッドが中止されるように、クライアント スレッド内でチェリーピー シャットダウンを検出する方法を知りたいと思っていました。

私はこのようなものを求めています:

class RootServer:
    @cherrypy.expose

    def index(self, **keywords):
        for i in range(0,1000):
            lengthyprocess(i)
            if server_is_shutting_down():
                return
4

1 に答える 1

7

状態を直接検査できます。

if cherrypy.engine.state != cherrypy.engine.states.STARTED:
    return

または、'stop' チャネルにリスナーを登録できます。

class RootServer:

    def __init__(self):
        cherrypy.engine.subscribe('start', self.start)
        cherrypy.engine.subscribe('stop', self.stop)

    def start(self):
        self.running = True

    def stop(self):
        self.running = False

    @cherrypy.expose
    def index(self, **keywords):
        for i in range(0,1000):
            lengthyprocess(i)
            if not self.running:
                return

後者は、リクエスト時ではなく、サーバーの起動時に長いプロセスを開始する (または何らかの準備を行う) 場合に特に役立ちます。

于 2012-06-18T15:28:59.280 に答える