Чем каналы Django отличаются от сельдерея?

Недавно я узнал о каналах Django. Может ли кто-нибудь сказать мне разницу между каналами и сельдереем, а также где использовать сельдерей и каналы.


person Vinay Singh    schedule 27.07.2016    source источник


Ответы (6)


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

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

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

person Meghdeep Ray    schedule 02.08.2016
comment
Каналы Django поддерживают фоновую обработку. Я думаю, что вопрос больше в том, чем фоновая обработка каналов django отличается от работников сельдерея. - person therealsachin; 17.04.2017
comment
Вы сказали, что сельдерей — это совсем другое. Я думаю, что с точки зрения высокого уровня они не совсем разные. Что случается? Ввод, обработка, вывод :-) См.: en.wikipedia.org/wiki/IPO_model - person guettli; 25.07.2017
comment
Допустим, я хочу сгенерировать файл, который занимает 30 секунд, должен ли я использовать сельдерей или каналы? - person Kritz; 21.09.2018
comment
@johan Сельдерей был бы лучше для этого. - person Meghdeep Ray; 22.09.2018
comment
@Johan, но если вы хотите сохранить файл журнала в долгосрочной перспективе и передать его на каналы вашего клиента (ов) веб-браузера, это правильный путь. - person ruckc; 27.02.2020

  • Каналы в Django предназначены для WebSocket, long-poll HTTP.

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

person Robert Lu    schedule 08.04.2017

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

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

person Timothy Mugayi    schedule 22.02.2017

Другие ответы в значительной степени объяснили разницу, но на самом деле каналы и сельдерей могут выполнять асинхронные объединенные задачи вместе.

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

Но имейте в виду, что Celery в первую очередь предназначен и может справиться с большинством проблем объединения задач (повторные попытки, серверная часть результатов и т. д.), тогда как каналы совершенно не предназначены.

person Zulu    schedule 28.04.2018

Channels — это проект, который использует Django и расширяет его возможности за пределы HTTP — для обработки веб-сокетов. , протоколы чата, протоколы Интернета вещей и многое другое. Он построен на спецификации Python под названием ASGI.

Каналы изменяют Django, чтобы вплетать асинхронный код в синхронное ядро ​​​​Django и через него, позволяя проектам Django обрабатывать не только HTTP, но и протоколы, требующие длительных соединений, — WebSockets, MQTT, чат-боты, любительское радио и многое другое.

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

Он также объединяет эту управляемую событиями архитектуру с уровнями каналов, системой, которая позволяет вам легко взаимодействовать между процессами и разделять ваш проект на разные процессы.

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

person Lokesh    schedule 14.08.2019

Каналы Django:

помимо HTTP — для обработки WebSockets, протоколов чата, протоколов IoT и т. д.

  1. Передает сообщения между клиентом и сервером (полное дуплексное соединение)

  2. Обработка запросов HTTP и веб-сокетов

  3. Асинхронный

Пример:

  • Приложение для чата в реальном времени
  • Обновите социальные каналы
  • Многопользовательская игра
  • Отправка уведомлений

Сельдерей:

Это очередь задач, ориентированная на обработку в реальном времени, а также поддерживающая планирование задач.

  1. Выполнять длительные фоновые задачи

  2. Выполнение периодических задач

  3. Асинхронный

Пример:

  • Обработка видео/изображений
  • Отправка массовых писем

Дополнительная литература

Пример каналов Celery и Django

Асинхронный и синхронный

person Muhammad Faizan Fareed    schedule 11.05.2019