Celery — это мощная распределенная система очередей задач для Python, позволяющая выполнять асинхронную и распределенную обработку задач. В этой статье мы погрузимся в мир декораторов в Celery 5.2.3 и рассмотрим различные методы расширения ваших возможностей управления задачами. Декораторы можно использовать для добавления функциональности, изменения поведения или предоставления дополнительного контекста вашим задачам Celery. Давайте начнем!
- Декораторы задач.
Декораторы задач применяются к функциям или методам, чтобы превратить их в задачи Celery. Они предоставляют дополнительные возможности и возможности выполнения задач. Вот пример:
from celery import Celery
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
- Декораторы повтора задачи.
Декораторы повтора позволяют автоматически повторять неудачные задачи с определенными конфигурациями. Это может быть полезно при работе с ненадежными сетевыми подключениями или внешними службами. Вот пример:
from celery import Celery
from celery.exceptions import Retry
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task(bind=True, max_retries=3)
def divide(self, x, y):
try:
result = x / y
except ZeroDivisionError as exc:
# Retry the task in case of a ZeroDivisionError
raise self.retry(exc=exc, countdown=10)
return result
- Декораторы ограничения времени задачи.
Декораторы ограничения времени позволяют вам накладывать временные ограничения на ваши задачи. Если задача превысит указанный лимит времени, она будет автоматически прекращена. Вот пример:
from celery import Celery
from celery.exceptions import SoftTimeLimitExceeded
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task(bind=True, soft_time_limit=30)
def process_image(self, image_path):
try:
# Perform image processing operations
# ...
pass
except SoftTimeLimitExceeded:
# Handle task timeout
pass
- Декораторы ограничения скорости выполнения задач.
Декораторы ограничения скорости позволяют контролировать скорость выполнения задач. Вы можете указать максимальное количество вызовов задач в течение заданного периода времени. Вот пример:
from celery import Celery
from celery.schedules import crontab
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task(rate_limit='10/m')
def process_data(data):
# Process the data
pass
- Декораторы аккордов задач.
Декораторы аккордов позволяют выполнять групповые операции над набором задач. Аккорд — это группа задач, которые выполняются параллельно, и задача обратного вызова может быть выполнена после завершения всех задач в аккорде. Вот пример:
from celery import Celery, group
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
@app.task
def multiply(x, y):
return x * y
@app.task
def callback(results):
# Perform post-processing on the results
pass
@app.task
def process_data(data):
tasks = group(add.s(1, 2), multiply.s(3, 4))
chord = tasks | callback.s()
chord.delay()
Декораторы в Celery 5.2.3 предоставляют мощный механизм расширения и управления поведением вашей распределенной системы обработки задач. Используя декораторы, вы можете улучшить функциональность, повторять неудачные задачи, устанавливать ограничения по времени, контролировать скорость выполнения задач и выполнять групповые операции. Эти методы позволяют создавать надежные и эффективные распределенные приложения. Начните изучать декораторы Celery сегодня и поднимите управление задачами на новый уровень!