問題タブ [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.
python - シリアル通信、Flask-SocketIO、Python マルチスレッド
私の質問は、Arduino Uno がソケットを介して別のクライアント アプリにデータを通信することに関連しています。[Jeopardy! 風のゲーム フロントエンドと通信するブザー システム] 目標は、「ロックアウト」イベントを発生させることです。
現在、Arduino は独自のスレッドで実行されており、Flask-SocketIO サーバーがメイン プロセスとして実行されています。「Emitting Socket」という print ステートメントを含むすべてのコードは機能しますが、ソケット データを後で放出する行は除きます。
これは単なるマルチスレッドの問題だと思いますが、マルチスレッドに関する私の経験は最小限です。
提案?
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 がある場合を処理しないことですが、それは別の問題です。
python - socket.ioを使用してFlaskで複数のクライアントを接続するには?
Flask サーバーで socket.io クライアントからデータを取得したいと考えています。私の設定は次のとおりです。
- Client1 は、サーバーでメソッド request_data を呼び出します。
- メソッド request_data は、Client2 で「client2」イベントを発行します。
私のフラスコサーバーには次の方法があります。
データを受信する必要があるクライアントで:
しかし、client2 への接続を確立できないようです。ここで何が間違っていますか?