Как я могу получить рабочий адрес для сельдерея app.control.broadcast - PullRequest
1 голос
/ 21 октября 2019

Я хочу передать команду панели конкретному работнику, используя app.control.broadcast, используя параметр адресата.

Что именно список адресатов ожидает в качестве адреса для работника? И как я могу получить этот адрес от рабочего (который, как я знаю, является необычным запросом, но здесь проще всего использовать мой рабочий процесс.)

1 Ответ

0 голосов
/ 21 октября 2019

Ну, это не идеально, но я справился с этим:

Получить имя потока на работнике:

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()

, что также полезно. Я еще не выяснил, содержит ли объект Результат сельдерея рабочий адрес, что также помогло бы мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...