ユーザーがブラウザーを介して何らかの要求を Python Web アプリケーションに送信する (オープン ソース) Web アプリケーションを実装したいと思います。要求データは、ある種の負荷の高いコンピューティング ジョブを定義して送信するために使用されます。コンピューティング ジョブは、「ワーカー バックエンド」(これも Python) にアウトソーシングされます。ジョブの処理中、ジョブは時間の経過とともにさまざまな段階を経ます (理想的には、中間状態の「送信済み」から「終了」まで)。私が達成したいのは、現在のジョブの状態をリアルタイムでユーザーに表示することです。これは、ワーカー バックエンドがジョブの状態を Web アプリケーションに伝える必要があることを意味します。次に、Web アプリケーションはユーザーのブラウザーに情報をプッシュする必要があります。基本的なアイデアを図式的に説明する写真を用意しました。
赤い丸の中の数字は、出来事の時系列を示しています。「Web アプリ」と「ワーカー バックエンド」はまだ設計中です。では、テクノロジーに関する決定をお手伝いいただけると幸いです。
私の質問、具体的には:
Web アプリとワーカー バックエンドの間にどのメッセージング テクノロジを適用する必要がありますか? ワーカー バックエンドが特定のジョブに関するシグナル (何らかのメッセージ) を送信すると、Web アプリケーションで何らかのイベントをトリガーする必要があります。したがって、最初にジョブの送信を要求したクライアントに関連付けられた何らかのコールバックが必要です。ここには、ワーカー バックエンドがパブリッシュし、Web アプリがサブスクライブする pub/sub メカニズムが必要だと思います。Web アプリは、メッセージを受信すると、クライアントにステータス更新を送信することで対応します。ワーカー バックエンドをスケーラブルにし、Web アプリケーションから強力に切り離したいと考えています。したがって、このタスクには Redis または ZeroMQ を使用することを考えていました。どう思いますか?私の全体的なアプローチは少し複雑すぎますか?
ブラウザーに情報をプッシュするには、どのテクノロジーを使用すればよいですか? 完璧主義なので、リアルタイムで更新したいと思います。高頻度でポーリングしたくありません。ワーカー バックエンドがメッセージを送信したときに、クライアントにすぐにプッシュしたい :-)。また、最大限のブラウザ サポートは必要ありません。まず第一に、このプロジェクトは多かれ少なかれ私自身の技術デモです。HTML5 サーバー送信イベント/Websocket を使用する必要がありますか? それとも別の方法をお勧めしますか?
事前にお勧めいただきありがとうございます。