Tornado を使用して Web リクエストを処理し、タスクを一連の Python プロセスにキューイングする設定があります。これらのプロセスの 1 つは制御プロセスで、その他はワーカー プロセスです。このサーバーの計算部分をオフにしたり、再起動したりできる機能を実装したいと考えています。これは、Tornado が単一のプロセスとして実行されている場合に完全に機能します。ただし、複数のサーバー プロセスを使用する場合は、次のようになります。
server = tornado.httpserver.HTTPServer(app)
server.bind(8888)
server.start(2)
tornado.ioloop.IOLoop.instance().start()
これにより、3 つのプロセス (1 つのコントロールと 2 つのハンドラー) が生成されます。計算プロセスを停止しようとすると、エラーが発生します。
AssertionError: can only join a child process
これは、Tornado ハンドラー プロセスが計算プロセスを停止しようとしていると解釈しますが、Tornado コントロールはその親です。
コントロール コンピューティング プロセスに停止メッセージを送信できるように、パイプを使用することを考えています。
そして2番目の質問として、私のアプローチ/アーキテクチャは完全に間違っていますか?適切なアプローチ/アーキテクチャは何ですか?