From 42462869f91c74917de6073a0db079763b251029 Mon Sep 17 00:00:00 2001 From: David Douard <david.douard@sdfa3.org> Date: Thu, 31 Jan 2019 12:13:44 +0100 Subject: [PATCH] Add a build_app() function to instantiate a Celery app with controlled config ie. being able to give the celery config dict as parameter. related to T1410 --- swh/scheduler/celery_backend/config.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/swh/scheduler/celery_backend/config.py b/swh/scheduler/celery_backend/config.py index 489f4e9d..f5331f16 100644 --- a/swh/scheduler/celery_backend/config.py +++ b/swh/scheduler/celery_backend/config.py @@ -21,7 +21,7 @@ import requests from swh.scheduler.task import Task -from swh.core.config import load_named_config +from swh.core.config import load_named_config, merge_configs from swh.core.logger import JournalHandler DEFAULT_CONFIG_NAME = 'worker' @@ -254,11 +254,24 @@ CELERY_DEFAULT_CONFIG = dict( task_send_sent_event=False, ) -# Instantiate the Celery app -app = Celery(broker=CONFIG['task_broker'], - backend=CONFIG['result_backend'], - task_cls='swh.scheduler.task:SWHTask') -app.add_defaults(CELERY_DEFAULT_CONFIG) + +def build_app(config=None): + config = merge_configs( + {k: v for (k, (_, v)) in DEFAULT_CONFIG.items()}, + config or {}) + logging.getLogger(__name__).info( + 'Creating a Celery app with %s', config) + + # Instantiate the Celery app + app = Celery(broker=config['task_broker'], + backend=config['result_backend'], + task_cls='swh.scheduler.task:SWHTask') + app.add_defaults(CELERY_DEFAULT_CONFIG) + app.add_defaults(config) + return app + + +app = build_app(CONFIG) # XXX for BW compat Celery.get_queue_length = get_queue_length -- GitLab