Mercurial > kallithea
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