Skip to content

Commit 468022b

Browse files
committed
worker: config validation on celery deamon/beat startup
validation earlier in the process now
1 parent 977c865 commit 468022b

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

  • packages/divbase-api/src/divbase_api/worker

packages/divbase-api/src/divbase_api/worker/tasks.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
from celery import Celery
1212
from celery.signals import (
1313
after_task_publish,
14+
beat_init,
15+
celeryd_init,
1416
task_prerun,
1517
worker_process_init,
1618
)
@@ -80,15 +82,25 @@
8082
)
8183

8284

85+
@celeryd_init.connect
86+
@beat_init.connect
87+
def validate_settings(**kwargs):
88+
"""
89+
Validate worker settings on celery daemon startup (celeryd_init) and celery Beat startup (beat_init)
90+
Will raise an exception if any required settings are missing or settings misconfigured.
91+
"""
92+
worker_settings.validate()
93+
logger.info("Worker settings validated successfully on worker process init.")
94+
95+
8396
@worker_process_init.connect
84-
def validate_settings_and_init_worker_metrics(**kwargs):
97+
def init_worker_metrics(**kwargs):
8598
"""
8699
Start the Prometheus metrics server for the Celery worker. This signal is triggered once per forked worker process.
87100
With celery prefork concurrency=1, only one worker process will start the metrics server.
88101
"""
89-
worker_settings.validate()
90-
logger.info("Worker settings validated successfully on worker process init.")
91102
if worker_settings.metrics.enabled_per_task:
103+
logger.info("Starting worker metrics server on port 8101 (ENABLE_WORKER_METRICS_PER_TASK is set to '1').")
92104
start_metrics_server(port=8101)
93105
else:
94106
logger.info("Worker metrics collection disabled (ENABLE_WORKER_METRICS_PER_TASK not set to '1').")

0 commit comments

Comments
 (0)