Невозможно сохранить модель внутри исключения задачи celery?
У меня есть цепочка задач celery для управления общением со старым API на основе опроса XML, поэтому мне нужно иметь возможность сделать один вызов удаленного API для каждой задачи и передать результаты следующей задаче. Некоторые из этих API выдают странные ошибки, поэтому я пытаюсь придумать общий способ отлова и проверки того, что все мои ошибки попадают в базу данных, чтобы у меня был аудиторский след того, что произошло.
Независимо от того, что я пробовал, когда я пытаюсь записать в базу данных из блока с пойманным исключением, она отказывается сохранять его. Я предполагаю, что что-то происходит в Django, но я не могу найти в документации никаких объяснений. Я знаю, что отлавливаю ошибку, потому что вижу записи в журнале
Я пытаюсь сделать что-то вроде следующего:
import traceback
import sys
import logging
log = logging.getLogger('daniTest')
@celery_app.task()
def dmtest(d:dict):
log.info(f'DM: Test: dict: {d}')
try:
raise Exception('Just a test.')
except Exception as e:
exc_info = sys.exc_info()
errStr = ''.join(traceback.format_exception(*exc_info))
log.error(errStr)
# d has a jobId key I can use to link to DB:
dbJob = MyModel.objects.get(job_id=d['jobId'])
dbJob.error_messages = errStr
dbJob.save()
Есть ли способ заставить это работать? Спасибо.