Используя сельдерей 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')
Я все еще хочу регистрировать сбой задачи, чтобы я мог видеть сбои в цветке, но я хочу игнорировать сбои или добавлять результаты, чтобы они просто говорили о сбое, и я мог видеть это в результатах электронной почты
Спасибо