2016-07-27 33 views

回答

15

Channels在Django中是爲了異步處理請求。
Django使用的標準模型是Request-Response,但有很大的侷限性。除了該模式的限制之外,我們無法做任何事情。
通道來到即將允許Web插槽和支持各地建設網絡套接字複雜的應用程序,這樣我們就可以發送多條消息,管理會話等

Celery是一個完全不同的東西,它是一個異步任務隊列/基於分佈式消息傳遞的作業隊列。它主要用於排隊任務並安排它們按特定間隔運行。當你需要asynchronous data communication喜歡聊天應用

簡而言之通道被使用,芹菜是調度任務,比如服務器刮網在固定的時間間隔某種類型的新聞事件。

+8

Django頻道不支持後臺處理。我認爲問題更多的是,django渠道後臺處理如何與芹菜工作者不同。 – therealsachin

+1

你說過「芹菜是完全不同的東西」。我認爲從高層次看,它們並不完全不同。怎麼了?輸入,處理,輸出:-)請參閱:https://en.wikipedia.org/wiki/IPO_model – guettli

1

Django通道讓django能夠處理的不僅僅是純HTTP請求,包括Websockets和HTTP2。將此視爲異步發生的雙向雙向通信 沒有瀏覽器刷新。多個客戶端可以通過websocket和django渠道發送和接收數據,這個互通示例是一個羣聊,同時客戶端同時訪問。在一定程度上可以實現與芹菜類似的長運行代碼的後臺處理,但是渠道的應用與芹菜不同。

Celery是基於分佈式消息傳遞的異步任務隊列/作業隊列。以及調度。按照leman的術語,我想在後臺啓動並運行一項任務,或者我想要定期執行一項定期任務,並按設定的時間間隔在後臺運行。您也可以以同步的方式觸發任務,並等待直到完成並繼續。 所以關鍵的區別是在他們所服務的使用情況和目標的框架

5
  • 在Django ChannelsWebSocketlong-poll HTTP的。

  • Celery用於後臺任務隊列。