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