Если вы хотите узнать, как использовать 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.

Имея в виду эти основные понятия, вы должны быть на пути к освоению искусства сельдерея. Удачного кодирования!