I'd like a celery task to be able to get the name of the worker executing it, for logging purposes. I need to handle this from within the task, rather than querying the broker directly. Is there a way to do this? I'm using celery with RabbitMQ, if that matters.
You need to utilize billiard which holds the workers:
from celery import task
from billiard import current_process
@task
def getName():
p = current_process()
return p.index
Then make a global dictionary that maps ids->names on process creation.