У меня есть простая задача в приложении сельдерея 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)
...