【问题标题】:How to configure Celery to send email alerts when tasks fail?如何配置 Celery 在任务失败时发送电子邮件警报?
【发布时间】:2014-07-07 11:46:05
【问题描述】:

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

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

是否可以使用 celery 或实用程序(例如花)或者我必须编写自己的插件?

【问题讨论】:

    标签: celery flower


    【解决方案1】:

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

    【讨论】:

    • 好的,谢谢。但它有一个问题,它会为每个失败的任务发送一封电子邮件。
    • 也与 Django 无关,即使你不使用 Celery 和 Django,只要所有正确的配置条目都在那里,它也可以工作。
    • 问题是关于在达到失败或重试任务的阈值时获取警报,而不是为每个任务(可能是数千个)发送电子邮件。请参阅this answer 以获取失败任务的列表,您可以从中计算统计信息以发送警报。
    • 这个选项可用于 celery 4.x 吗?我找不到这样的。
    • 4.x 版不再提供
    【解决方案2】:

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

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

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

    您还可以使用NewRelic 之类的东西,它可以直接监控您的流程并提供许多其他功能。尽管在 NewRelic 中有关例外情况的电子邮件报告有所限制。

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

    【讨论】:

    • 那么为什么投反对票呢?阅读这个问题,显而易见的答案是你不能开箱即用。你可以按照@daniula 所说的去做,但这并不严重。如果出现严重问题,您的收件箱中将收到 10k 封电子邮件。
    • 投反对票是我的错误。您的解决方案没问题,我没有注意到应该在 X 失败后发送消息,而不是每次失败。只有当您的答案将被编辑时,我才能更改我的投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2014-11-03
    • 1970-01-01
    相关资源
    最近更新 更多