Celery - 如果组任务失败继续回调(有效记录任务失败)

Ale*_*exW 7 python logging celery

使用 celery 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))
Run Code Online (Sandbox Code Playgroud)

原始错误:

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

我仍然想记录任务失败,以便我可以看到花中的失败,但我想忽略失败或附加结果,所以他们只是说失败,我可以在电子邮件结果中看到它

谢谢