W programie Seler można wykonać dowolne zadanie w przypadku wyjątku. Możesz to zrobić tak:Jak zaimplementować autoregulację dla zadań związanych z selerem
@task(max_retries=5)
def div(a, b):
try:
return a/b
except ZeroDivisionError, exc:
raise div.retry(exc=exc)
W tym przypadku, jeśli chcesz podzielić przez zero, zadanie zostanie powtórzone pięć razy. Ale musisz sprawdzić błędy w kodzie jawnie. Zadanie nie zostanie wznowione, jeśli pominiesz blok .
Chcę moje funkcje wyglądać:
@celery.task(autoretry_on=ZeroDivisionError, max_retries=5)
def div(a, b):
return a/b
ta traci jednak wynik. Czy nie powinien coś zwrócić? – dalore