Сельдерей - продолжить обратный вызов при сбое групповой задачи (эффективное ведение журнала сбоев задач) - PullRequest
7 голосов
/ 05 мая 2020

Используя сельдерей 4.4.2, у меня есть группа задач, которая подключается к удаленным устройствам и собирает данные, когда это завершается, результаты сопоставляются, а затем отправляются по электронной почте с задачей обратного вызова. на одном из удаленных устройств происходит сбой обратного вызова. Я читал, что использование link_error должно решить эту проблему, но я не уверен, что моя реализация, я выполнил приведенное ниже, но все равно не удалось

    for device in device_ids:
        task_count +=1
        tasks.append(config_auth.s(device.id, device.hostname, device.get_scripts_ip()))

    callback = email_auth_results.s().set(link_error=error_handler.s())
    tasks = group(tasks)
    r = chord(tasks)(callback)

    return '{} tasks sent to queue'.format(task_count) 


@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))

исходная ошибка:

celery.exceptions.ChordError: Dependency 5ffc10c9-edc7-4b91-a660-08c372c60ab2 raised NetmikoTimeoutException('Connection to device timed-out')

Я все еще хочу регистрировать сбой задачи, чтобы я мог видеть сбои в цветке, но я хочу игнорировать сбои или добавлять результаты, чтобы они просто говорили о сбое, и я мог видеть это в результатах электронной почты

Спасибо

...