2016-07-27 2 views

ответ

15

Channels в Django предназначены для асинхронной обработки запросов.
Стандартная модель Django использует Request-Response, но имеет значительные ограничения. Мы не можем ничего делать за пределами ограничений этой модели.
каналы произошло, чтобы позволить поддержку веб-сокетов и создавать сложные приложения вокруг веб-сокеты, так что мы можем отправить несколько сообщений, управлять сеансами и т.д.

Celery это совершенно другая вещь, это асинхронная очередь задач/очередь заданий на основе передачи распределенных сообщений. Это в первую очередь для задач очередей и планирования их работы через определенные промежутки времени.

Проще говоря каналы используются, когда вам необходимо asynchronous data communication как приложение чата и сельдерея для планирования задач и событий, таких как сервер выскабливание в Интернете для определенного типа новостей на определенные промежутки времени.

+8

Каналы Django поддерживают обработку фона. Я думаю, что вопрос больше связан с тем, как обработка фонограмм канала Djjango отличается от работы сельдерей. – therealsachin

+1

Вы сказали: «Сельдерей - совсем другое дело». Я думаю, что с точки зрения высокого уровня они не совсем разные. Что происходит? Вход, обработка, вывод :-) См. Https://en.wikipedia.org/wiki/IPO_model – guettli

1

Каналы Django предоставляют django возможность обрабатывать больше, чем просто простые HTTP-запросы, включая Websockets и HTTP2. Подумайте об этом как о двухстороннем двустороннем общении, которое происходит асинхронно. Обновления браузера не обновляются. Несколько клиентов могут отправлять и получать данные по каналам websocket и django, организуя этот пример взаимодействия в групповом чате с одновременным доступом одновременно к клиентам. Вы можете в определенной степени добиться фоновой обработки длинного кода, близкого к сельдерею, но применение каналов отличается от применения сельдерея.

Сельдерей - это асинхронная очередь задач/очередь заданий на основе распределенной передачи сообщений. Как и планирование. В терминах leman я хочу запустить и запустить задачу в фоновом режиме, или я хочу иметь периодическую задачу, которая срабатывает и работает в фоновом режиме на заданном интервале. Вы также можете запускать задачу синхронно, а также запускать огонь и ждать до завершения и продолжения. Поэтому основное отличие заключается в использовании случае они служат и целям в рамках

5
  • Channels в Django для WebSocket, long-poll HTTP.

  • Celery предназначен для задания фона, очереди.

Смежные вопросы