Пример использования Yandex Message Queue с Celery
Celery — это очередь задач для языка программирования Python, которую можно использовать в работе с Message Queue.
Установка
Установите 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"
Подготовка к работе
Пример
В этом примере:
- Задача ставится в очередь.
- Выполняются задачи, находящиеся в очереди.
Для запуска примера:
-
Скопируйте пример в файл с названием
ymq_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('ymq_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 ymq_example' to execute it")
-
Запустите обработчик задач следующей командой:
$ celery worker -A ymq_example
-
Поставьте задачу в очередь задач следующей командой:
$ python ymq_example.py
По умолчанию Celery создаёт очередь Message Queue с названием celery
в каталоге, которому принадлежит сервисный аккаунт.