【发布时间】:2019-10-21 10:03:25
【问题描述】:
我希望使用 app.control.broadcast 向特定工作人员广播面板命令,并使用目标参数。
目标列表究竟期望作为工人的地址是什么?以及如何从工作人员那里获得该地址(我知道这是一个不寻常的请求,但对我的工作流程来说最简单。)
【问题讨论】:
我希望使用 app.control.broadcast 向特定工作人员广播面板命令,并使用目标参数。
目标列表究竟期望作为工人的地址是什么?以及如何从工作人员那里获得该地址(我知道这是一个不寻常的请求,但对我的工作流程来说最简单。)
【问题讨论】:
嗯,这并不理想,但我做到了:
获取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 对象是否包含工作地址,这对我也有用。
【讨论】: