大量のデータを処理し、その進行状況についてクライアントに更新を送信するシステムを設計しようとしています。私は nginx (ありがたいことに、websockets のサポートを開始したばかりです) と uwsgi を Web サーバーに使用したいと考えており、zeromq を使用してシステムを介してメッセージを渡しています。理想的には、ソリューションは Python で記述できますが、Nodejs や Go ソリューションも受け入れます。
達成したいフローは次のとおりです。
- クライアントが Web サイトにアクセスし、大量のデータの処理を要求します。
- サーバーは、zeromq を介して別のプロセス/サーバー [ワーカー] に処理をファームアウトし、サーバーで Websocket をセットアップする方法に関する情報を含む、処理が開始されたことを説明するクライアント要求に応答します。
- クライアントは Websocket 接続をセットアップし、更新を待ちます。
- 処理が完了すると、ワーカーは「処理が完了しました!」を送信します。メッセージを zeromq 経由で websocket プロセスに送信すると、websocket プロセスはメッセージをクライアントにプッシュします。
私が説明することは可能ですか?uwsgi を皇帝モードで実行して、Web サーバー用の 1 つのプロセス (ポート) と Websocket プロセス用の別のプロセス (ポート) を処理できると考えていたと思います。zeromq メッセージを受信し、Websocket 接続をすべて同じプロセスから管理する方法を見つけることができるかどうかはわかりません。ワーカーからの最終的な websocket プッシュを開始する必要があるのでしょうか?
ヘルプ/正しい方向指示/潜在的な解決策は大歓迎です。Websocket が適切にルーティングされた nginx 構成ファイルのサンプルまたはスニペットも同様に高く評価されます。
ありがとう!