Celery: Aufgaben mit abgelaufenem Fehler schlagen mit AttributeError("'str'-Objekt hat kein Attribut 'isoformat'",)

Erstellt am 12. Juni 2017  ·  3Kommentare  ·  Quelle: celery/celery

Checkliste

  • [x] Ich habe die Ausgabe von celery -A proj report in die Ausgabe aufgenommen.
    (wenn Sie dies nicht können, dann geben Sie zumindest den Sellerie an
    betroffene Version).
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

Schritte zum Reproduzieren

  1. Erstellen Sie eine Aufgabe, die erneut versucht, indem Sie self.retry() raise erhöhen
  2. Rufen Sie die Aufgabe mit send_task und legen Sie expires

Erwartetes Verhalten

Die Aufgabe sollte es erneut versuchen, bis die Ablaufzeit erreicht ist oder der Wert max_retries erreicht ist

Tatsächliches Verhalten

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'
Bug Report Duplicate ✘ Has Testcase ✔

Hilfreichster Kommentar

Eine Problemumgehung, die das Problem zu beheben scheint – Neuzuweisung des Werts von self.request.expires vor der Erhöhung von self.retry() .

Dh in der Run-Methode:

self.request.expires = dateparser.parse(self.request.expires)
raise self.retry()

Alle 3 Kommentare

Eine Problemumgehung, die das Problem zu beheben scheint – Neuzuweisung des Werts von self.request.expires vor der Erhöhung von self.retry() .

Dh in der Run-Methode:

self.request.expires = dateparser.parse(self.request.expires)
raise self.retry()

wahrscheinlich ist das behoben und wir können es schließen? @thedrow

Sieht aus wie ein Duplikat.
Bitte versuchen Sie es mit der neuesten RC und prüfen Sie, ob das Problem behoben ist.
Wenn nicht, kommentieren Sie hier und wir werden wieder öffnen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen