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


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

4 14

4 ответа:

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

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

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

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

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

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

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

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

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

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