【问题标题】:How can I get the worker address for Celery's app.control.broadcast如何获取 Celery 的 app.control.broadcast 的工作人员地址
【发布时间】:2019-10-21 10:03:25
【问题描述】:

我希望使用 app.control.broadcast 向特定工作人员广播面板命令,并使用目标参数。

目标列表究竟期望作为工人的地址是什么?以及如何从工作人员那里获得该地址(我知道这是一个不寻常的请求,但对我的工作流程来说最简单。)

【问题讨论】:

    标签: python django celery


    【解决方案1】:

    嗯,这并不理想,但我做到了:

    获取worker上的线程名称:

    from celery.signals import celeryd_after_setup
    
    @celeryd_after_setup.connect
    def capture_worker_name(sender, instance, **kwargs):
        worker_thread_name = '{0}'.format(sender)
        print("Celery worker name: " + worker_thread_name)
        app.conf["worker_thread_name"] = worker_thread_name
    

    这并不理想,因为这只适用于机器上的一个工人。

    您可以通过以下方式获取“客户端”上的工作人员地址列表:

    app.control.inspect().stats().keys()
    

    这也很有帮助。我还没有发现 Celery Result 对象是否包含工作地址,这对我也有用。

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 2021-08-15
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多