Недавно я узнал о каналах Django. Может кто-нибудь сказать мне разницу между каналами и сельдереем, а также где использовать сельдерей и каналы.
Чем каналы Django отличаются от сельдерея?
Ответ 1
Channels в Django предназначены для асинхронной обработки запросов.
Стандартная модель Django использует Request-Response, но имеет существенные ограничения. Мы не можем ничего делать за пределами ограничений этой модели.
Каналы появились, чтобы разрешить поддержку Web Socket и создавать сложные приложения вокруг веб-сокетов, чтобы мы могли отправлять несколько сообщений, управлять сеансами и т.д.
Celery - это совсем другая вещь, это асинхронная очередь очереди задач/заданий на основе распределенной передачи сообщений. Это в первую очередь для задач очередей и планирования их работы через определенные промежутки времени.
Проще говоря, каналы используются, когда вам нужна асинхронная передача данных, как приложение чата, а Celery - для планирования задач и событий, таких как сервер, очищающий сеть для определенного тип новостей с фиксированными интервалами.
Ответ 2
Ответ 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-протоколов и многого другого.
-
Передает сообщения между клиентом и сервером (полнодуплексное соединение)
-
Обрабатывать запросы HTTP и Web-сокетов
-
Асинхронный
Пример :
- Приложение для чата в реальном времени
- Обновление социальных каналов
- Многопользовательская игра
- Отправка уведомлений
Сельдерей :
Это очередь задач с акцентом на обработку в реальном времени, а также с поддержкой планирования задач.
-
Выполнять длительные фоновые задачи
-
Выполнять периодические задачи
-
Асинхронный
Пример :
- Обработка видео/изображений
- Отправка массовых писем
дальнейшее чтение