複数の国 (日本、香港、シンガポールなど) に複数のデータセンターがあります。
これらの各場所の複数のホストでアプリケーションを実行します。おそらく合計で約 50 ~ 100 のホストです。
私は、各アプリケーションのステータスを照会し、さまざまなトリガーをそれらに送信し、実行時にそれらから他のものを取得する Python スクリプトに取り組んでいます。このスクリプトはおそらく中央サーバーにクエリを実行し、中央サーバーは各ホストで実行されているエージェントにリクエストを送信します。
要件の 1 つは、スクリプトが可能な限り応答性が高いことです。たとえば、すべての場所にあるすべてのホストのアプリケーションのステータスを照会する場合、20 ~ 30 秒ではなく、1 ~ 3 秒以内に結果を返したいと考えています。
したがって、特に必要な WAN ホップを考慮すると、各ホストを順番にクエリするのは遅すぎます。
各ホスト自体のクエリはかなり自明であると想定できます (たとえば、プロセスが実行されているかどうかなど)。
私は並行プログラミングまたは非同期プログラミングにかなり慣れていないので、ここでの入力はまったく価値があります。この問題に取り組むための「最善の」アプローチは何ですか?
- マルチスレッドまたはマルチプロセスのアプローチを使用します。たとえば、ホストごとに新しいスレッドを生成し、それらをすべて送信してから応答を待ちますか?
- 非同期コア、ツイスト、トルネードを使用してください - ここで適切なコメントはありますか? (asyncore はあまり人気がないように感じます。Tornado は試すのが楽しいかもしれませんが、ここでどのように使用できるかわかりませんか?)
- ある種のメッセージ キュー (Kombu/RabbitMQ など) を使用しますか?
- どうにかしてセロリを使って?必要な応答時間に対して十分な応答性がありますか? (例えば、上記の場合は 3 秒未満)。
乾杯、ビクター