問題タブ [daphne]
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.
django - systemdでdaphneを使用してdjangoチャネルを実行する
まず最初に、長い質問で申し訳ありません。何人かの方がこれに我慢してくださることを願っています。
TL; DR: systemd で django 設定を正しくロードするにはどうすればよいですか?
Daphne を使用して Django チャネルをデプロイするこのガイドに従っているので、(WebSocket を使用して) いくつかのリアルタイム アプリを実行できます。nginx がなくても、コマンド ラインからワーカー (python manage.py runworker) とインターフェイス (daphne) を実行すると、以下のログに見られるように、正しいチャネル コンシューマー クラスにアクセスできます (これらは JavaScript クライアントからトリガーされました)。 :
これらのイベントは、次の JavaScript 呼び出しによってトリガーされました。
nginx を使用し、systemd でインターフェイスとワーカーの両方を実行すると、まったく同じトリガー入力を使用しているにもかかわらず、次のログが表示されます。
受信チャネルが にルーティングされていることに注意してくださいnull_consumer
。ここでの問題は、単にchannels.routing
セットアップが適切に行われていないという事実にあると思います。両方のバージョンで同じ設定 (Django 設定ファイル) を使用しているため、設定自体が正しく読み込まれていない可能性があります。以下のファイルを検討してください。
次のように設定channels.routing
する必要があります。
繰り返しますが、systemd がなくても動作するため、構成自体が間違っているとは思いません。最後に、私の systemd 設定は次のとおりです。
リンクされたガイドに従って、DJANGO_SETTINGS_MODULE変数を環境にエクスポートする両方の構成ファイルに注意してください。これは期待どおりに機能していないと思います。
python - Daphne が websocket をリッスンしていない
クライアントとサーバーの通信に websocket を使用する django-channels+celery で作成された webapp があります。ホスト マシンで daphne、セロリ ワーカー、および redis を実行してテストした後、すべてを docker-compose でカプセル化して、展開可能なシステムにすることにしました。
ここから問題が始まりました。docler-compose.yaml を学習、微調整、およびデバッグした後、なんとか動作させることができましたが、それでも websockets を再び動作させることはできません。
Websocketを開いてコマンドを送信すると、アプリのjavascript部分から、またはchromeのjavascriptコンソールから、ws_connectもws_receiveコンシューマーもトリガーされません。
これは私のセットアップです:
設定.py
ルーティング.py
消費者.py
docker-compose.yaml
サーバーを実行します
と労働者
方程式から nginx を削除したので、ワーカーとダフネを別々のコンテナーで実行し、すべての Websocket 接続をダフネ コンテナーで管理して、コンピューティング タスクをワーカーにディスパッチしたいと考えています。問題は、WebSocket を開いてデータを送信しても何も起こらないことです。
docker-compose up
そして、この無線沈黙の後。ホストマシンですべてを実行したときに出力が印刷されましたが、今は何もありません。問題がどこにある可能性がありますか?