ので、セッションのXHRポーリング輸送で失敗します。私はWebSocketを使用しています。それ以外の場合は、XHRポーリング(IEなど)を強制しています。複数の労働者は、私は現在、労働者<strong>socketio.sgunicorn.GeventSocketIOWorker</strong>を使用してgunicornサーバで複数の労働者間<a href="https://github.com/abourget/gevent-socketio" rel="nofollow">gevent-socketio</a>を拡張しようとしている
XHRポーリングでは、次のポーリングを追跡するためのセッションが必要ですが、1人から2人以上の作業者になるとすぐに要求が広がり始め、状態が失われ、すべてが故障します。
私は、次のコード行が関連していると思う: https://github.com/abourget/gevent-socketio/blob/master/socketio/handler.py#L104-106 私は私が定期のpubsub-アクションのために使用していますが、これは実際のライブラリの奥深くである例のRedisのために、いくつかの他のストレージエンジンを必要とします。
私の質問は、メモリ内のセッションストレージからアプリケーション内のグローバルに別のバックエンドエンジンに移動する方法です(上のリンクのセッションコードを上書きします)ライブラリ自体を変更する必要はありませんか? Something like PHP's session directives in php.ini。私は、これが非常に一般的なpythonの質問であるとの議論ができたと思いますが、私は関連情報を見つけるのに苦労しています。また、このライブラリでもうまくいくかどうかはわかりません。
代わりに、gevent-socketioのxhrポーリング転送を別のワーカーとサーバー間で(スティッキーなしで)使用するにはどうすればよいですか?
ありがとうございます!
ちょっとしたアイデア:セッション固有の情報をクッキーに保存していますか? RESTの一種。 –
@moodhこれを解決しましたか?とにかく、複数の労働者が本当に助けてくれますか? Gevent自体は、すでに1つのイベントループで多くの呼び出しを処理するのに優れています。 – pors
いいえ、私はあきらめて、代わりにhttp://pusher.com/を使い始めました。この問題に関しては、gevent-socketio(https://github.com/abourget/gevent-socketio/issues/112)にいくつかのチケットがありますが、どのくらい来たのか分かりません。申し訳ありません:) – moodh