0

いくつかのトルネードインスタンスへのnginxサーバープロキシリクエストがあります。各トルネードインスタンスは、トルネードに付属する長時間ポーリングのチャットデモに基づいています。スクリプトには、コールバックを格納する配列があります。コールバックは、クライアントにメッセージをディスパッチするために使用されます。

私が抱えている問題は、複数の竜巻インスタンスがある場合、nginxはラウンドロビン戦略を使用することです。コールバックはインスタンスごとに保存されるため(一元的に維持されることはありません)、リクエストがいつ行われるかに応じて、インスタンスの1つに送られます。このため、データをプッシュする必要がある場合、データは同じトルネードインスタンスに格納されているコールバックにのみ送信されます。

複数の竜巻インスタンス間でデータを保存する方法の標準的な方法はありますか?memcachedを使用することを考えていましたが、ストア内のすべてのキーを繰り返す必要がある場合、それは不可能です(ただし、Idが常に必要とするものではありません)。複数のPythonプロセス間でデータを保存するための標準的な方法があるかどうかを知りたかっただけです。mmapについても読みましたが、コールバック(Pythonメソッド)の保存でどのように機能するかわかりませんでした。

4

2 に答える 2

1

「チャット」スタイルのアプリケーションの場合は、Redisとそこに実装されているPub/Sub処理を確認したほうがよい場合があります。

これは、pub/subについて尋ねられた良い質問です。 TornadoでRedis接続を処理する適切な方法は何ですか?(非同期-Pub / Sub)

于 2012-04-30T18:07:36.667 に答える
1

すぐに使えるレシピはありません。mmapやRabbitMQのようなメッセージプロバイダー、またはRedisのような単純なnoSQLDBを使用できます。あなたの場合、多分ZeroMQを試してみたでしょう。

于 2012-04-28T11:15:34.750 に答える