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

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

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

Ответ 6

Каналы Джанго:

помимо HTTP - для обработки WebSockets, протоколов чата, IoT-протоколов и многого другого.

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

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

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

Пример :

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

Сельдерей :

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

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

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

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

Пример :

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

дальнейшее чтение

Пример каналов Сельдерея и Джанго

Асинхронный против Синхронного