Пример использования Yandex Message Queue с Celery
Статья создана
Обновлена 24 апреля 2024 г.
Celery
Установка
Установите Celery и необходимые зависимости:
pip install celery
pip install celery[sqs]
pip install boto3
pip install pycurl
Задайте переменные окружения:
export AWS_ACCESS_KEY_ID="<идентификатор_ключа_доступа>"
export AWS_SECRET_ACCESS_KEY="<секретный_ключ>"
export AWS_DEFAULT_REGION="ru-central1"
Подготовка к работе
Пример
В этом примере:
- Задача ставится в очередь.
- Выполняются задачи, находящиеся в очереди.
Для запуска примера:
-
Скопируйте пример в файл с названием
mq_example.py
:from celery import Celery import logging import boto3 ENDPOINT = 'message-queue.api.cloud.yandex.net:443' broker='sqs://{}'.format(ENDPOINT) broker_transport_options = { 'is_secure': True, } app = Celery('mq_example', broker=broker) app.conf.broker_transport_options = broker_transport_options @app.task def add(a, b): res = a + b app.log.get_default_logger().info('{} + {} = {}'.format(a, b, res)) return res if __name__ == '__main__': add.delay(2, 3) print("Task scheduled, now run 'celery worker -A mq_example' to execute it")
-
Запустите обработчик задач следующей командой:
celery worker -A mq_example
-
Поставьте задачу в очередь задач следующей командой:
python mq_example.py
По умолчанию Celery создаёт очередь Message Queue с названием celery
в каталоге, которому принадлежит сервисный аккаунт.