2

aiohttpアプリケーションをGunicornbehindで実行しますnginx。私のアプリケーションの初期化モジュールでは、アプリケーションを使用して実行するのではなく、ワーカーが作成するたびに実行するためにweb.run_app(app)インポートされるインスタンスを作成するだけです。そのため、いくつかのワーカー プロセスを作成し、その中でイベント ループを作成し、それらのループでアプリケーションの要求ハンドラーを実行します。GunicornGunicornGunicorn

私のアプリケーションには、によって開始されたアプリケーション プロセスのいずれかで発生したイベントで通知したいaiohttp、接続された (モバイル アプリケーション クライアント) のコレクションがあります。そして、すべてのアプリケーション プロセスに接続されているすべての人に通知したいと考えています。したがって、私はある種のアップストリーム プロキシを使用して作成し、各アプリケーション プロセスからソケットを使用してサブスクライブしたいと考えています。WebSocketsGunicorn WebSocketsZeroMQzmq.SUB

...基本的に、各アプリケーション ワーカーで次のようなことを実現したいと考えています。

context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect('tcp://localhost:5555')

while True:
    event = socket.recv()
    for ws in app['websockets']:
        ws.send_bytes(event)
    # break before app shutdown. How?

ZeroMQアプリケーション内でプロキシをリッスンaiohttpしてメッセージを転送するにはどうすればよいWebSocketsですか?

aiohttpこのコードをイベント ループ内のバックグラウンドで実行する場所と、アプリケーションのライフ サイクル内で正しく実行およびシャットダウンする方法を教えてください。


アップデート

私はすでにaiohttp の GitHub リポジトリで問題を説明し、考えられる解決策を提案する問題を作成しました。説明されている問題について、あちこちで意見をいただければ幸いです。

4

1 に答える 1