J'ai un simple fichier test_celery.py avec le contenu suivant qui ne soient pas remis en cours d'exécution d'une tâche ayant échoué:tâche de céleri pas de nouvelle tentative
from celery import Celery
import time
app = Celery(
'test_celery',
broker='amqp://',
backend='amqp'
)
@app.task(retries=4)
def my_fail():
try:
raise Exception()
except Exception as e:
print('Tring: {0}/{1}'.format(my_fail.request.retries, my_fail.max_retries))
# Print log message with current retry
my_fail.retry(exc=e, max_retries=4, countdown=2)
if __name__ == '__main__':
fail()
print('All done!')
Malheureusement, quand je lance la tâche, il court une fois:
$ python test_celery.py
Tring: 0/3
Traceback (most recent call last):
File "test_celery.py", line 20, in <module>
my_fail()
File "/Users/alexgray/.virtualenvs/clearcare/lib/python3.4/site-packages/celery/local.py", line 191, in __call__
return self._get_current_object()(*a, **kw)
File "/Users/alexgray/.virtualenvs/clearcare/lib/python3.4/site-packages/celery/app/task.py", line 380, in __call__
return self.run(*args, **kwargs)
File "test_celery.py", line 17, in my_fail
my_fail.retry(exc=e, max_retries=4, countdown=2)
File "/Users/alexgray/.virtualenvs/clearcare/lib/python3.4/site-packages/celery/app/task.py", line 653, in retry
raise_with_context(exc or Retry('Task can be retried', None))
File "test_celery.py", line 13, in my_fail
raise Exception()
Exception
Je suis sûr que je manque quelque chose évidente, mais je ne sais pas ce que je fais mal.
Vous avez raison. J'ai aussi dû l'appeler comme my_fail.delay() dans main, pas my_fail() – grayaii