Celery — это асинхронная очередь задач или очередь заданий с открытым исходным кодом , основанная на распределенной передаче сообщений. Хотя он поддерживает планирование, его основное внимание уделяется операциям в реальном времени. [1]
Исполняющие единицы, называемые задачами , выполняются одновременно на одном или нескольких рабочих узлах с использованием многопроцессорной обработки , eventlet [2] или gevent. [3] Задачи могут выполняться асинхронно (в фоновом режиме) или синхронно (ожидать готовности). Сельдерей используется в производственных системах, таких сервисах, как Instagram , для ежедневной обработки миллионов задач. [1]
Celery написан на Python , но протокол можно реализовать на любом языке. Он также может работать с другими языками с помощью веб-перехватчиков . [4] Существует также Ruby -клиент под названием RCelery, [5] клиент PHP , [6] клиент Go , [7] клиент Rust , [8] и клиент Node.js. [9]
Рекомендуемые брокеры сообщений — RabbitMQ или Redis . По сравнению с RabbitMQ Redis представляет собой хорошее начало. Однако если есть веская причина и Redis больше не соответствует требованиям проекта, можно просто переключиться на RabbitMQ. Кроме того, в статусе экспериментального поддерживаются MongoDB , Amazon SQS , CouchDB , IronMQ и базы данных (с использованием SQLAlchemy или Django ORM) . [10]