问题 如何配置Celery在任务失败时发送电子邮件警报?


如何在任务失败时配置芹菜发送电子邮件警报?

例如,当超过3个任务失败或正在重试10个以上的任务时,我希望Celery通知我。

是否有可能使用芹菜或实用工具(如花)或我必须自己编写插件?


7293
2017-07-07 11:46


起源



答案:


是的,您需要做的就是设置 CELERY_SEND_TASK_ERROR_EMAILS = True 如果Celery进程失败,django将向所有设置的电子邮件发送带回溯的消息 ADMINS 设置。


7
2017-07-07 20:23



对了谢谢。但它有一个问题,它为每个失败的任务发送一封电子邮件。 - Ali
也与Django无关,即使你没有使用带有Django的Celery,只要所有正确的配置条目都存在,它也会工作。 - Maiku Mori
问题是在达到失败或重试任务的阈值时获取警报,而不是为每个任务发送电子邮件(可能是数千个)。看到 这个答案 获取失败任务的列表,您可以从中计算发送警报的统计信息。 - RichVel


答案:


是的,您需要做的就是设置 CELERY_SEND_TASK_ERROR_EMAILS = True 如果Celery进程失败,django将向所有设置的电子邮件发送带回溯的消息 ADMINS 设置。


7
2017-07-07 20:23



对了谢谢。但它有一个问题,它为每个失败的任务发送一封电子邮件。 - Ali
也与Django无关,即使你没有使用带有Django的Celery,只要所有正确的配置条目都存在,它也会工作。 - Maiku Mori
问题是在达到失败或重试任务的阈值时获取警报,而不是为每个任务发送电子邮件(可能是数千个)。看到 这个答案 获取失败任务的列表,您可以从中计算发送警报的统计信息。 - RichVel


据我所知,它不可能开箱即用。

您可以在芹菜或花卉上编写自定义客户端或直接访问RabbitMQ。

我会做什么(我正在做)只是记录失败的任务,然后使用类似的东西 Graylog2 要监控日志文件,这适用于所有基础架构,而不仅仅是Celery。

你也可以使用类似的东西 NewRelic的 它直接监控您的流程并提供许多其他功能。虽然NewRelic的异常电子邮件报告在某种程度上受到限制。

简单的客户端/监视器可能是最快的解决方案。


2
2017-07-07 12:33



那么为什么投票呢?阅读问题,显而易见的答案是你不能开箱即用。你可以做@daniula所说的,但这并不严重。如果出现严重错误,您最终会在收件箱中收到10k封电子邮件。 - Maiku Mori
那个downvote是我的错。你的解决方案没问题,我没有注意到在X发生故障后应该发送消息,而不是每次都失败。只有在您的答案被编辑时,我才能更改我的投票。 - daniula