celery -A proj report
の出力を問題に含めました。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
タスクを呼び出し、 expires
タスクは、有効期限に達するか、max_retries値に達するまで再試行する必要があります
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'
問題を修正するように見える回避策- self.retry()
を上げる前にself.request.expires
の値を再割り当てします。
つまり、runメソッドでは:
self.request.expires = dateparser.parse(self.request.expires)
raise self.retry()
おそらくこれは修正されており、閉じることができますか? @thedrow
重複しているように見えます。
最新のRCを試して、問題が解決するかどうかを確認してください。
そうでない場合は、ここにコメントしてください。再開します。
最も参考になるコメント
問題を修正するように見える回避策-
self.retry()
を上げる前にself.request.expires
の値を再割り当てします。つまり、runメソッドでは: