2016-07-27 35 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用于后台任务队列。