2016-07-27 24 views

答えて

15

Channelsは、リクエストの非同期処理を目的としています。
Djangoが使用する標準モデルはRequest-Responseですが、それには大きな制限があります。私たちはそのモデルの制約の外には何もできません。我々は複数のメッセージを送信できるように
チャンネルが

Celeryは全く異なるものであるなど、セッションを管理、ウェブソケットのサポートを可能にし、Webソケット周りの複雑なアプリケーションを構築しようとして来た、それは/非同期タスクキューです分散メッセージの受け渡しに基づくジョブキュー。主にタスクをキューに入れ、特定の間隔で実行するようにスケジューリングします。あなたがチャットアプリケーションのようなasynchronous data communicationを必要とするとき

簡単に言えばチャンネルが使用され、セロリは、スケジューリングタスクと一定間隔でニュースの特定のタイプのためにウェブをこするサーバーなどのイベントのためです。

+8

Djangoチャンネルはバックグラウンド処理をサポートしています。私は質問は、より多くのdjangoチャネルのバックグラウンド処理はセロリの労働者とはどのように異なっていると思う。 – therealsachin

+1

あなたは「セロリはまったく別のものです」と言った。私は、高レベルの視点からは全く異なるわけではないと思います。何が起こるのですか?入力、処理、出力:-)参照:https://en.wikipedia.org/wiki/IPO_model – guettli

1

Djangoチャンネルでは、djangoにWebsocketやHTTP2などの単純なHTTPリクエスト以上の処理が可能です。これを非同期的に発生する2ウェイデュプレックス通信と考えてください。 ブラウザが爽やかではありません。複数のクライアントがwebsocketとdjangoチャネルを介してデータを送受信することで、この相互通信の例を同時にまとめて同時にアクセスするクライアントとのグループチャットを調整することができます。ある程度セロリと同じ長さのコードをバックグラウンドで処理することはできますが、チャネルの適用はセロリとは異なります。

セロリは、分散メッセージパッシングに基づいた非同期タスクキュー/ジョブキューです。スケジューリングだけでなくレーマンの言葉では、私はバックグラウンドでタスクを実行したり実行したりしたい、または一定の間隔でバックで実行される定期的なタスクを実行したい。また、同期的な方法でタスクを起動することもでき、完了するまで待機し続けます。 だから、重要な違いは、彼らが提供ユースケースであるとDjangoで

5
  • Channelsフレームワークの目的はWebSocketlong-poll HTTPためのものです。

  • Celeryは、バックグラウンドタスクキューです。

関連する問題