Знакомство с Celery

Что такое очередь задач?

Очереди задач используются как механизм распределения работы между потоками или машинами.

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

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

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

Celery написан на Python, но протокол может быть реализован на любом языке. В дополнение к Python существуют node-celery и node-celery-ts для Node.js, а также PHP client.

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

Что мне нужно?

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

Celery может работать на одной машине, на нескольких машинах или даже в разных центрах обработки данных.

Приступить к работе

Если вы впервые пытаетесь использовать Celery, или если вы не следите за развитием версии 3.1 и переходите с предыдущих версий, то вам следует прочитать наши руководства по началу работы:

Celery - это…

Характеристики

Рамочная интеграция

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

Для Django см. Первые шаги в работе с Django.

Интеграционные пакеты не являются строго необходимыми, но они могут облегчить разработку, и иногда они добавляют важные крючки, такие как закрытие соединений с базой данных при fork(2).

Быстрый прыжок

Установка

Вы можете установить Celery либо через Python Package Index (PyPI), либо из исходного кода.

Для установки используйте pip:

$ pip install -U Celery

Пакеты

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

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

$ pip install "celery[librabbitmq]"

$ pip install "celery[librabbitmq,redis,auth,msgpack]"

Доступны следующие комплекты:

Сериализаторы

celery[auth]:

за использование сериализатора безопасности auth.

celery[msgpack]:

для использования сериализатора msgpack.

celery[yaml]:

для использования сериализатора yaml.

Concurrency

celery[eventlet]:

за использование пула eventlet.

celery[gevent]:

за использование пула gevent.

Транспорты и бэкенды

celery[librabbitmq]:

для использования библиотеки librabbitmq C.

celery[redis]:

для использования Redis в качестве транспорта сообщений или бэкенда результатов.

celery[sqs]:

для использования Amazon SQS в качестве транспорта сообщений (экспериментально).

celery[tblib]:

для использования функции task_remote_tracebacks.

celery[memcache]:

для использования Memcached в качестве бэкенда результатов (используя pylibmc)

celery[pymemcache]:

для использования Memcached в качестве бэкенда результатов (чистая реализация на Python).

celery[cassandra]:

для использования Apache Cassandra в качестве бэкенда результатов с драйвером DataStax.

celery[couchbase]:

для использования Couchbase в качестве бэкенда результатов.

celery[arangodb]:

для использования ArangoDB в качестве бэкенда результатов.

celery[elasticsearch]:

для использования Elasticsearch в качестве бэкенда результатов.

celery[riak]:

для использования Riak в качестве бэкенда результатов.

celery[dynamodb]:

для использования AWS DynamoDB в качестве бэкенда результатов.

celery[zookeeper]:

для использования Zookeeper в качестве транспорта сообщений.

celery[sqlalchemy]:

для использования SQLAlchemy в качестве бэкенда результатов (поддерживается).

celery[pyro]:

для использования транспорта сообщений Pyro4 (экспериментальный).

celery[slmq]:

для использования транспорта SoftLayer Message Queue (экспериментально).

celery[consul]:

для использования хранилища ключей/значений Consul.io в качестве транспорта сообщений или бэкенда результатов (экспериментально).

celery[django]:

указывает самую низкую версию, возможную для поддержки Django.

Вам, вероятно, не следует использовать это в своих требованиях, это здесь только в информационных целях.

Загрузка и установка из источника

Загрузите последнюю версию Celery из PyPI:

https://pypi.org/project/celery/

Вы можете установить его, выполнив следующие действия:

$ tar xvfz celery-0.0.0.tar.gz
$ cd celery-0.0.0
$ python setup.py build
# python setup.py install

Последняя команда должна быть выполнена от имени привилегированного пользователя, если вы не используете virtualenv.

Использование версии для разработки

С помощью трубы

Версия разработки Celery также требует версии разработки kombu, amqp, billiard и vine.

Вы можете установить их последний снимок с помощью следующих команд pip:

$ pip install https://github.com/celery/celery/zipball/master#egg=celery
$ pip install https://github.com/celery/billiard/zipball/master#egg=billiard
$ pip install https://github.com/celery/py-amqp/zipball/master#egg=amqp
$ pip install https://github.com/celery/kombu/zipball/master#egg=kombu
$ pip install https://github.com/celery/vine/zipball/master#egg=vine

С помощью git

Обратитесь к разделу Contributing.

Вернуться на верх