【问题标题】:Logging Celery on Client/Producer在客户端/生产者上记录 Celery
【发布时间】:2020-04-17 23:16:02
【问题描述】:

不是关于如何捕获 celery 工人的日志记录的问题。有什么方法可以捕获 Producer 上的 celery 日志记录。我想要的是当我调用task.delay(...)task.apply_async(...) 时,在Producer 上捕获由celery 生成的每个日志。

编辑: 我不想捕获生产者的工作日志。我想捕捉从我打电话到apply_async 直到任务发送给经纪人期间发生在 celery 中的所有事情。

【问题讨论】:

    标签: celery


    【解决方案1】:

    不,没有办法捕获生产者的工作日志。你得到的只是异常,如果抛出。任何日志都发生在工作人员端,因此您必须检查该特定工作人员的日志,或者如果您使用一些集中式日志系统,那么您必须查找来自该工作人员的日志......

    更新:您似乎想在生产者(客户端)端从 Celery 捕获最终日志记录。据我所知,Celery 和底层的传输处理库(Kombu)没有记录任何东西。当然,我可能是错的,但我不记得在那里看到任何日志记录,而且我已经多次阅读 Celery(Kombu 不是那么公平)代码......

    一种可能的解决方案是让 Celery 工作人员将日志发送到您的 Celery 客户端可以访问的某个集中式系统......

    【讨论】:

    • 我不想捕获工作日志。我想捕获生产者日志。我的意思是我想查看 Celery 在发送任务时 所做的所有事情的每个日志。这有意义吗?
    • 似乎确实没有日志是由 Celery 或 Kombu 直接产生的。
    • Celery 可能不会,但自定义任务(如我的)肯定会。它可以在 apply_sync 发布任务之前记录信息,我在这里遇到了与@konoufo 相同的问题,因为我想使用 Celery 记录器(为了保持一致性),但在我的客户端控制台上查看日志(用 konoufo 的话来说是生产者)。我现在被困住了。
    • @BerndWechner 解决方案是使用集中式日志服务器,或者只使用您最喜欢的消息队列来发送日志。我正在为后者编写一个简单的模块。
    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多