Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages, while providing operations with the tools required to maintain such a system.
Install the Instrumentation
First, install the
opentelemetry-instrumentation-celery package. We also recommend installing the Redis instrumentation package. To add both instrumentation packages to your project, add the following lines to your
# requirements.txt opentelemetry-instrumentation-celery opentelemetry-instrumentation-redis
Celery requires some extra setup, as it's an application component that's started separately.
As shown in the example below, the
__appsignal__ module needs to be imported in the main file used to start Celery, and the
appsignal.start() method needs to be called from a method with the
In the example below, this initialization takes place in the
tasks.py file. This file may be named differently in your application.
# tasks.py # Import this file from __appsignal__ import appsignal from celery import Celery # Import this file from celery.signals import worker_process_init # Add the init_celery_tracing method with its annotation @worker_process_init.connect(weak=False) def init_celery_tracing(*args, **kwargs): appsignal.start() app = Celery('tasks', broker='redis://localhost') @app.task def slow_task(): # Do things