0

BaseManager を使用してキューをワーカー プロセスのプールと共有しています。マネージャーを別のスレッドで実行するために、start() を呼び出します。

shutdown() の下のドキュメントには、「これは、start() を使用してサーバー プロセスを開始した場合にのみ使用できます」と記載されています。ただし、shutdown() を呼び出すと、毎回、フォアグラウンド プロセスがマネージャー プロセスで 20 秒間ブロックされてから終了します。shutdown() を呼び出さない場合、フォアグラウンド プロセスはすぐに終了しますか?

私は何が欠けていますか?

また、ドキュメントに「これは複数回呼び出すことができます」と記載されている理由を知っている人はいますか? 複数のシャットダウン シグナルをマネージャ プロセスに送信するのはなぜですか?

4

1 に答える 1

1

設計上、20秒待機します。 詳細については、こちらを参照してください

        process.join(timeout=0.2)
        if process.is_alive():
            util.info('manager still alive')
            if hasattr(process, 'terminate'):
                util.info('trying to `terminate()` manager process')
                process.terminate()
                process.join(timeout=0.1)
                if process.is_alive():
                    util.info('manager still alive after terminate')
于 2013-03-01T05:07:46.917 に答える