Celery¶
The logfire.instrument_celery()
method will create a span for every task
executed by your Celery workers.
Installation¶
Install logfire
with the celery
extra:
pip install 'logfire[celery]'
uv add 'logfire[celery]'
rye add logfire -E celery
poetry add 'logfire[celery]'
Usage¶
You'll need a message broker to run Celery. In this example, we'll run RabbitMQ on a docker container. You can run it as follows:
docker run -d --hostname my-rabbit \
--name some-rabbit \
# -e RABBITMQ_DEFAULT_USER=user \
# -e RABBITMQ_DEFAULT_PASS=password \
rabbitmq:3-management
Below we have a minimal example using Celery. You can run it with celery -A tasks worker --loglevel=info
:
tasks.py
import logfire
from celery import Celery
from celery.signals import worker_process_init
logfire.configure()
@worker_process_init.connect(weak=False)
def init_celery_tracing(*args, **kwargs):
logfire.instrument_celery()
app = Celery("tasks", broker="pyamqp://localhost//") # (1)!
@app.task
def add(x, y):
return x + y
add.delay(42, 50)
- Install
pyamqp
withpip install pyamqp
.
The keyword arguments of logfire.instrument_celery()
are passed to the
CeleryInstrumentor().instrument()
method.