Что такое сигнатура обработчика сельдерея on_error и как передать ему аргументы? - PullRequest
0 голосов
/ 13 июля 2020

Я видел этот вопрос, на который не получил ответа: Передача параметров в задачу Celery on_error

Мой первый вопрос: какова сигнатура обработчика ошибок, которую мы можем передать задаче Celery, используя on_error(...) или apply(..., link_error=...).

По ссылке выше (передать Передать параметры в задачу Celery on_error , их on_error имеет подпись:

multiple.on_failure(exc, task_id, args, kwargs, einfo)

В эта ссылка из документов о Canvas , подпись:

@app.task
def log_error(request, exc, traceback):
    with open(os.path.join('/var/errors', request.id), 'a') as fh:
        print('--\n\n{0} {1} {2}'.format(task_id, exc, traceback), file=fh)

В этой другой ссылке из документов: Calling Tasks , подпись:

@app.task
def error_handler(uuid):
    result = AsyncResult(uuid)
    exc = result.get(propagate=False)
    print('Task {0} raised exception: {1!r}\n{2!r}'.format(uuid, exc, result.traceback))

В моей собственной кодовой базе я вижу людей, использующих:

def handle_error(*args, **kwargs):

Кроме того, можете ли вы установить точку останова, используя rdb внутри обработчика on_error? Также почему обработчик должен быть @task?

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