herypank
@herypank

Как сделать celery retry через передачу аргументов?

У меня стоит задача запускать celery таски с разным retry аргументами, кто подскажет как это можно реализовать?

Вот семпл из кода чтобы потестить:

from celery import Celery

app = Celery('tasks', broker='amqp://guest@localhost//')

import celery



class RetryCeleryWorker(celery.Task):
    autoretry_for = (Exception,)
    retry_backoff = True
    retry_backoff_max = 700
    retry_jitter = False

@app.task(base=RetryCeleryWorker)
def add():
    print('add starting')
    0/0
    print('add finish')


Я нашел такое решение, но оно не работает

https://lifesaver.codes/answer/delay-and-apply-asy...

хочу чтобы запуск задачки был примерно такой

from tasks import add, app, RetryCeleryWorker


add.apply_async(retry=True, retry_policy={
    'max_retries': 5,
})


но в celery почему-то не попадают max_retries и другие аргументы или не считываются

Идея в том чтобы если я передавал что-то, то это применялось как в атрибутах celery, а если не передаю, то используется дефолтные в классе

upd. нашел это, похоже надо писать свой костыль https://github.com/celery/celery/issues/2457
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы