Mercurial > kallithea
changeset 6167:9452b5a8e06f
celery: refactor config loader
* implement __contains__ - is needed by Celery 3
* less exception juggling - follow the flow and let __getitem__ be simple and low level
TODO: Drop the name mangling and just use the real names for the settings.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 06 Sep 2016 00:51:18 +0200 |
parents | e67b9f4b9d95 |
children | f770722cdb6c |
files | kallithea/lib/celerypylons/loader.py |
diffstat | 1 files changed, 26 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/celerypylons/loader.py Tue Sep 06 00:51:18 2016 +0200 +++ b/kallithea/lib/celerypylons/loader.py Tue Sep 06 00:51:18 2016 +0200 @@ -3,6 +3,7 @@ from celery.loaders.base import BaseLoader from pylons import config +# TODO: drop this mangling and just use a separate celery config section to_pylons = lambda x: x.replace('_', '.').lower() to_celery = lambda x: x.replace('.', '_').upper() @@ -12,29 +13,35 @@ class PylonsSettingsProxy(object): """Pylons Settings Proxy - Proxies settings from pylons.config + Make settings from pylons.config appear the way Celery expects them. + """ + + def __getattr__(self, key): + try: + return self[key] + except KeyError: + raise AttributeError(key) - """ - def __getattr__(self, key): + def get(self, key, default=None): + try: + return self[key] + except KeyError: + return default + + def __getitem__(self, key): + pylons_key = to_pylons(key) + value = config[pylons_key] + if key in LIST_PARAMS: + return value.split() + return self.type_converter(value) + + def __contains__(self, key): pylons_key = to_pylons(key) try: - value = config[pylons_key] - if key in LIST_PARAMS:return value.split() - return self.type_converter(value) + config[pylons_key] except KeyError: - raise AttributeError(pylons_key) - - def get(self, key): - try: - return self.__getattr__(key) - except AttributeError: - return None - - def __getitem__(self, key): - try: - return self.__getattr__(key) - except AttributeError: - raise KeyError() + return False + return True def __setattr__(self, key, value): pylons_key = to_pylons(key)