2016-08-04 13 views

答えて

2

socketio.emit()関数はスレッドセーフであるか、スレッドセーフであると言わなければなりません。現在のところ、これに関連するオープンな問題が1つあります。この文脈における「スレッド」は、サポートされているスレッドモデルを意味することに留意されたい。ほとんどの人は、プロダクションでのeventletやgeventと一緒にFlask-SocketIOを使用しています。そのため、スレッドは「緑色」のスレッドを意味します。

open issueは、複数のサーバーがある場合に必要なメッセージキューの使用に関連しています。その設定では、この時点ではキューへのアクセスはスレッドセーフではありません。これは修正が必要なバグですが、回避策として、スレッドごとに異なるsocketioオブジェクトを作成することができます。

socketio.emit()がアトミックかどうかに関する2番目の質問では、答えはノーです。これは単純なソケット書き込み操作ではありません。ペイロードは、Socket.IOプロトコルに準拠するために特定の方法でフォーマットする必要があります。選択されたトランスポート(ロングポーリングまたはウェブソケット)に応じて、書き込みはまったく異なる方法で行われます。

関連する問題