Изучение декораторов в Celery 5.2.3: усовершенствуйте управление распределенными задачами

Celery — это мощная распределенная система очередей задач для Python, позволяющая выполнять асинхронную и распределенную обработку задач. В этой статье мы погрузимся в мир декораторов в Celery 5.2.3 и рассмотрим различные методы расширения ваших возможностей управления задачами. Декораторы можно использовать для добавления функциональности, изменения поведения или предоставления дополнительного контекста вашим задачам Celery. Давайте начнем!

  1. Декораторы задач.
    Декораторы задач применяются к функциям или методам, чтобы превратить их в задачи Celery. Они предоставляют дополнительные возможности и возможности выполнения задач. Вот пример:
from celery import Celery
app = Celery('myapp', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
    return x + y
  1. Декораторы повтора задачи.
    Декораторы повтора позволяют автоматически повторять неудачные задачи с определенными конфигурациями. Это может быть полезно при работе с ненадежными сетевыми подключениями или внешними службами. Вот пример:
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
  1. Декораторы ограничения времени задачи.
    Декораторы ограничения времени позволяют вам накладывать временные ограничения на ваши задачи. Если задача превысит указанный лимит времени, она будет автоматически прекращена. Вот пример:
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
  1. Декораторы ограничения скорости выполнения задач.
    Декораторы ограничения скорости позволяют контролировать скорость выполнения задач. Вы можете указать максимальное количество вызовов задач в течение заданного периода времени. Вот пример:
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
  1. Декораторы аккордов задач.
    Декораторы аккордов позволяют выполнять групповые операции над набором задач. Аккорд — это группа задач, которые выполняются параллельно, и задача обратного вызова может быть выполнена после завершения всех задач в аккорде. Вот пример:
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 сегодня и поднимите управление задачами на новый уровень!