celery -A proj report
dans le numéro.software -> celery:4.0.2 (latentcall) kombu:4.0.2 py:3.6.1
billiard:3.5.0.2 py-amqp:2.1.4
platform -> system:Darwin arch:64bit imp:CPython
loader -> celery.loaders.default.Loader
settings -> transport:amqp results:disabled
self.retry()
send_task
et définissez expires
La tâche doit réessayer jusqu'à ce que le délai d'expiration soit atteint ou que la valeur max_retries soit atteinte
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/celery/app/task.py", line 684, in retry
S.apply_async()
File "/usr/lib/python3.6/site-packages/celery/canvas.py", line 221, in apply_async
return _apply(args, kwargs, **options)
File "/usr/lib/python3.6/site-packages/celery/app/task.py", line 535, in apply_async
**options
File "/usr/lib/python3.6/site-packages/celery/app/base.py", line 729, in send_task
root_id, parent_id, shadow, chain,
File "/usr/lib/python3.6/site-packages/celery/app/amqp.py", line 334, in as_task_v2
expires = expires and expires.isoformat()
AttributeError: 'str' object has no attribute 'isoformat'
Une solution de contournement qui semble résoudre le problème : réaffecter la valeur de self.request.expires
avant d'augmenter self.retry()
.
C'est-à-dire dans la méthode run :
self.request.expires = dateparser.parse(self.request.expires)
raise self.retry()
cela est probablement corrigé et nous pouvons le fermer? @thedrow
On dirait un doublon.
Veuillez essayer la dernière RC et voir si le problème est résolu.
Si ce n'est pas le cas, commentez ici et nous rouvrirons.
Commentaire le plus utile
Une solution de contournement qui semble résoudre le problème : réaffecter la valeur de
self.request.expires
avant d'augmenterself.retry()
.C'est-à-dire dans la méthode run :