diff --git a/celery_app.py b/celery_app.py index db2e5a5..6666b76 100644 --- a/celery_app.py +++ b/celery_app.py @@ -1,7 +1,7 @@ import sys import time from celery import Celery -from celery.signals import worker_ready, task_prerun, task_postrun +from celery.signals import worker_ready, worker_process_init, task_prerun, task_postrun from dotenv import load_dotenv import os @@ -35,9 +35,16 @@ CELERY_METRICS_PORT = int(os.getenv("CELERY_METRICS_PORT", "9090")) _task_start_times: dict[str, float] = {} +@worker_process_init.connect +def _init_worker_metrics(**kwargs: object) -> None: + """Initialise OTel metrics in each prefork worker process.""" + from api.metrics import init_metrics + init_metrics(os.getenv("SERVICE_NAME", "celery-worker")) + + @worker_ready.connect def _start_metrics_server(**kwargs: object) -> None: - """Start a lightweight Prometheus HTTP server in the worker process.""" + """Start a lightweight Prometheus HTTP server in the main worker process.""" from api.metrics import init_metrics init_metrics(os.getenv("SERVICE_NAME", "celery-worker"))