問題タブ [flask-socketio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
951 参照

python - シリアル通信、Flask-SocketIO、Python マルチスレッド

私の質問は、Arduino Uno がソケットを介して別のクライアント アプリにデータを通信することに関連しています。[Jeopardy! 風のゲーム フロントエンドと通信するブザー システム] 目標は、「ロックアウト」イベントを発生させることです。

現在、Arduino は独自のスレッドで実行されており、Flask-SocketIO サーバーがメイン プロセスとして実行されています。「Emitting Socket」という print ステートメントを含むすべてのコードは機能しますが、ソケット データを後で放出する行は除きます。

これは単なるマルチスレッドの問題だと思いますが、マルチスレッドに関する私の経験は最小限です。

提案?

0 投票する
2 に答える
1169 参照

flask - イベントレットとRedisを使用したFlask socketioデバッグは、余分なグリーンスレッドを生成しますか?

Redis イベントをサブスクライブする単純な Flask/socketio/eventlet サーバーをまとめようとしています。私が見ている動作は、Flask デバッグが有効になっていると、Werkzeug が変更を検出して socketio を再起動するたびに、別の redis リスナーも開始されるということです (古いリスナーは終了しません)。

すべての socketio ハンドラが削除された作業バージョンを次に示します。

手動の redis-cli パブリッシング (PUBLISH msg himom) を投入します。これにより、次の出力が生成されます。

Redis リスナーが複数回開始されるのはなぜですか? 変更を加えて保存すると、Werkzeug は毎回別の変更を開始します。これを正しく処理するにはどうすればよいですか?

関連するパッケージとそのバージョンのリストは次のとおりです。

  • パイソン 2.7.6
  • フラスコ 0.10.1
  • Werkzeug 0.11.4
  • イベントレット 0.18.4
  • グリーンレット 0.4.9
  • フラスコ-Redis 0.1.0
  • Flask-SocketIO 2.2

** 更新 ** 現在、部分的な解決策があります。プールの動作が Flask の「before_first_request」関数に移動したことを除いて、上記のすべては同じままです。

残りの問題は、'before_first_request' が既存の websocket がある場合を処理しないことですが、それは別の問題です。

0 投票する
1 に答える
2349 参照

python - socket.ioを使用してFlaskで複数のクライアントを接続するには?

Flask サーバーで socket.io クライアントからデータを取得したいと考えています。私の設定は次のとおりです。

  1. Client1 は、サーバーでメソッド request_data を呼び出します。
  2. メソッド request_data は、Client2 で「client2」イベントを発行します。

私のフラスコサーバーには次の方法があります。

データを受信する必要があるクライアントで:

しかし、client2 への接続を確立できないようです。ここで何が間違っていますか?