Если вы хотите узнать, как использовать Celery, популярную очередь задач и планировщик заданий для Python, вы попали по адресу. В этом руководстве мы познакомим вас с основами настройки и запуска Celery, а также с некоторыми более продвинутыми функциями, такими как маршрутизация и планирование задач.
Во-первых, давайте начнем с основ. Чтобы начать работу с Celery, вам нужно установить его с помощью pip:
pip install celery
После установки Celery вы можете определять задачи, используя функции Python, украшенные декоратором @task
. Вот пример:
from celery import Celery app = Celery('tasks', broker='pyamqp://guest@localhost//') @app.task def add(x, y): return x + y
В этом примере мы определяем простую задачу с именем add
, которая принимает два аргумента, x
и y
, и возвращает их сумму. Мы также создаем приложение Celery с именем «задачи» и используем брокер сообщений «pyamqp». Вы можете заменить его другим брокером, если хотите.
Чтобы запустить воркер Celery, вы можете использовать команду celery
:
celery -A tasks worker --loglevel=info
Это запустит рабочий процесс Celery и начнет обработку задач по мере их добавления в очередь.
Одной из мощных функций Celery является возможность направлять задачи в разные очереди в зависимости от их типа. Вот пример:
В этом примере мы определяем две задачи, add
и send_email
, и указываем, что add
должна быть перенаправлена в очередь "math", а send_email
должна быть перенаправлена в очередь "email". Затем вы можете запустить отдельные рабочие процессы Celery для каждой очереди, чтобы обрабатывать их независимо.
Наконец, Celery также поддерживает планирование выполнения задач в определенное время с помощью декоратора @app.task
с аргументом eta
. Вот пример:
from celery import Celery app = Celery('tasks', broker='pyamqp://guest@localhost//') @app.task(queue='math') def add(x, y): return x + y @app.task(queue='email') def send_email(to, subject, body): # send email code here return 'Email sent'
В этом примере мы планируем выполнение задачи add
через 10 минут в будущем, используя аргумент eta
с объектом datetime
.
Имея в виду эти основные понятия, вы должны быть на пути к освоению искусства сельдерея. Удачного кодирования!