Celery: конкретное исключение в задаче вызывает WorkerLostError - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть простая задача в приложении сельдерея Django, такая как

@shared_task
def task(some_arg):
  # Do some stuff
  if some_error:
    raise Exception("Something went wrong")

, все работает как надо, и задача не выполняется должным образом:

[...:ERROR/ForkPoolWorker-2] Task task[some-id] raised unexpected: Exception('Something went wrong',)

Но когда библиотека вызываетПользовательское исключение Я получаю следующий вывод:

[...: WARNING/ForkPoolWorker-2] --- Logging error ---
[...: ERROR/MainProcess] Task handler raised error: WorkerLostError('Worker exited prematurely: exitcode 0.',)
Traceback (most recent call last):
  File ".../lib/python3.6/site-packages/billiard/pool.py", line 1226, in mark_as_worker_lost
    human_status(exitcode)),
billiard.exceptions.WorkerLostError: Worker exited prematurely: exitcode 0.

Как это отладить?

Пользовательский класс Error выглядит следующим образом:

class faultType(structType, Error):
  def __init__(self, faultcode = "", faultstring = "", detail = None):
      self.faultcode = faultcode
      self.faultstring = faultstring
      if detail != None:
          self.detail = detail

      structType.__init__(self, None, 0)

...

1 Ответ

0 голосов
/ 12 апреля 2019

Насколько я понимаю, вам нужно отладить проблему внутри другой библиотеки, которая вызывает ошибку.Для этого вы можете использовать встроенную библиотеку pdb.

import pdb
pdb.set_trace()

Затем выполните пошаговую оценку.Вы можете пройти это руководство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...