Celery: Tugas dengan kedaluwarsa gagal dengan AttributeError("'str' objek tidak memiliki atribut 'isoformat'",)

Dibuat pada 12 Jun 2017  ·  3Komentar  ·  Sumber: celery/celery

Daftar periksa

  • [x] Saya telah menyertakan output celery -A proj report dalam masalah ini.
    (jika Anda tidak dapat melakukan ini, maka setidaknya tentukan Seledri
    versi terpengaruh).
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

Langkah-langkah untuk mereproduksi

  1. Buat tugas yang mencoba lagi melalui kenaikan self.retry()
  2. Panggil tugas dengan send_task dan setel expires

Perilaku yang diharapkan

Tugas harus mencoba lagi hingga waktu kedaluwarsa tercapai atau nilai max_retries tercapai

Perilaku sebenarnya

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 ✔

Komentar yang paling membantu

Solusi yang muncul untuk memperbaiki masalah - menetapkan kembali nilai self.request.expires sebelum menaikkan self.retry() .

Yaitu, dalam menjalankan metode:

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

Semua 3 komentar

Solusi yang muncul untuk memperbaiki masalah - menetapkan kembali nilai self.request.expires sebelum menaikkan self.retry() .

Yaitu, dalam menjalankan metode:

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

mungkin ini sudah diperbaiki dan kita bisa menutupnya? @thedrow

Sepertinya duplikat.
Silakan coba RC terbaru dan lihat apakah masalahnya teratasi.
Jika tidak, komentar di sini dan kami akan membuka kembali.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat