問題タブ [asgi]

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 に答える
49 参照

python - グループとチャネル レイヤーは、例外を発生させずにプロセスを停止させます

この非常に単純な作業コード サンプルから始めます。

JavaScript からこの websocket コンシューマーに接続すると、これは期待どおりに機能します。接続は適切に発行され、次のログが取得されます。

ここで、グループを使用するために、コードを次のコードに変更すると:

次に、接続が失敗します。JavaScript コンソールに次のように表示されます。

サーバーログは次のようになります。

ただし、サーバー側では例外は発生しません。

グループを使用せずに同様の動作を取得することもできます。もう少し大きな作業コード サンプルを見てみましょう。

このコードは正常に動作し、接続は適切に発行され、サーバー ログは次のとおりです。

しかし、コードに次の小さな変更を加えると:

次に、接続は適切に発行されますが、すぐに閉じられ、「three」を出力する機会がないままプロセスが停止し、関数「foobar_send」も実行されません。

例外も発生しないのに、「three」が出力されない理由がわかりません。これは、?self.channel_layers.send()の呼び出し元によって例外が発生し、サイレントにキャッチされることを意味します。IsacomptaManagementFeesConsumer.connect()

最後の段落を書いた後、試してみることにしました。

それだけです。隠れた「ファイルが見つかりません」というエラーがあります。

Channels 2.4.0 および channels-redis 2.4.2 で Django 3.0 を使用しています。ここに私の CHANNEL_LAYERS 設定があります: