Ну, это не идеально, но я справился с этим:
Получить имя потока на работнике:
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()
, что также полезно. Я еще не выяснил, содержит ли объект Результат сельдерея рабочий адрес, что также помогло бы мне.