1

私は2つのTornadoプロセスXY. のハンドラーはXポスト リクエストを処理します。そのようなリクエストが届いたときは、 に変更を加えるだけでなくX、 に格納されているいくつかの変数も変更したいと考えていますY

Redisこれを行うために の PUB/SUB を使用したいと思います。Xのハンドラーで、「Y」がサブスクライブしているチャネルにメッセージを発行する必要があることは明らかです。

メッセージがチャネルにパブリッシュされるたびに、何かがメモリ内の変数を自動的に更新するように、このサブスクリプションはY長時間実行する必要があります。Yただし、このサブスクリプションとその結果の更新を に実装する方法は明確ではありませんY。これは通常のハンドラーにはできないためです。違いがある場合は、これに非同期 redis クライアントtornado-redisを使用する予定です。

いくつかの例は大きな助けになるでしょう!

4

1 に答える 1

1

これは Redis PUB/SUB ソリューションではなく、代替手段です。スタックに既に Redis がある場合は、それを使用することもできます (または、メッセージ キューを使用することをお勧めします)。

  1. X が変更を行う必要がある場合、X にHTTPRequesttornado.web.RequestHandlerを Y に送信させます。ペイロードは JSON、フォーム エンコード、バイナリにすることができます。

  2. Y 内にソケットを作成し、それをバインドして、実行IOLoop.add_handlerする a を使用してそのソケットでリッスンを追加callbackします。X が変更を行う必要がある場合は、そのソケットに接続します。(ペイロードは JSON、バイナリにすることができます)。メッセージを送信する必要がある場合、これには小さなソケットの受け入れと読み取りが必要になります。

言うまでもなく、両方ともファイアウォールの背後にある必要があります。

于 2013-01-18T20:40:48.400 に答える