changeset 8162:193138922d56

celery: introduce make_app instead of creating app at import time It is dirty to instantiate things at import time (unless it really is basic singletons). In 0.5.1 (and earlier), such dirtyness made partial test execution fail when other things had global side effects and things didn't use the usual import order: $ py.test kallithea/lib/ collecting ... ――― kallithea/lib/celerypylons/__init__.py ――― kallithea/lib/celerypylons/__init__.py:58: in <module> app.config_from_object(celery_config(tg.config)) kallithea/lib/celerypylons/__init__.py:28: in celery_config assert config['celery.imports'] == 'kallithea.lib.celerylib.tasks', 'Kallithea Celery configuration has not been loaded' data/env/lib/python2.7/site-packages/tg/configuration/tgconfig.py:31: in __getitem__ return self.config_proxy.current_conf()[key] E KeyError: 'celery.imports' Avoid that by running a "factory" function when the celery app actually is needed.
author Mads Kiilerich <mads@kiilerich.com>
date Sat, 25 Jan 2020 20:18:59 +0100
parents 2786730e56e0
children 24e1099e4f29
files kallithea/bin/kallithea_cli_celery.py kallithea/lib/celerypylons/__init__.py
diffstat 2 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/bin/kallithea_cli_celery.py	Tue Feb 04 03:05:15 2020 +0100
+++ b/kallithea/bin/kallithea_cli_celery.py	Sat Jan 25 20:18:59 2020 +0100
@@ -16,6 +16,7 @@
 
 import kallithea
 import kallithea.bin.kallithea_cli_base as cli_base
+from kallithea.lib import celerypylons
 
 
 @cli_base.register_command(config_file_initialize_app=True)
@@ -35,6 +36,6 @@
         raise Exception('Please set use_celery = true in .ini config '
                         'file before running this command')
 
-    from kallithea.lib import celerypylons
-    cmd = celerypylons.worker.worker(celerypylons.app)
+    app = celerypylons.make_app()
+    cmd = celerypylons.worker.worker(app)
     return cmd.run_from_argv(None, command='celery-run -c CONFIG_FILE --', argv=list(celery_args))
--- a/kallithea/lib/celerypylons/__init__.py	Tue Feb 04 03:05:15 2020 +0100
+++ b/kallithea/lib/celerypylons/__init__.py	Sat Jan 25 20:18:59 2020 +0100
@@ -53,6 +53,8 @@
     return celery_config
 
 
-# Create celery app from the TurboGears configuration file
-app = celery.Celery()
-app.config_from_object(celery_config(tg.config))
+def make_app():
+    """Create celery app from the TurboGears configuration file"""
+    app = celery.Celery()
+    app.config_from_object(celery_config(tg.config))
+    return app