Mercurial > kallithea
changeset 6470:8377f2bfb88f
config: refactor beaker configuration
While refactoring:
* drop support for 'cache.' prefix - it is only 'beaker.config.' that ever has
been documented or used in examples
* make prefix stripping more safe (if the prefix should appear twice in the key)
* trust exactly what has been configured - drop stripping of strings
* drop int conversion of 'expire' - beaker documentation suggests strings are fine
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Mon, 23 Jan 2017 01:56:39 +0100 |
parents | 62eedbae0558 |
children | 8b4c09e740a7 |
files | kallithea/lib/utils.py |
diffstat | 1 files changed, 15 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/utils.py Fri Dec 23 21:29:53 2016 +0100 +++ b/kallithea/lib/utils.py Mon Jan 23 01:56:39 2017 +0100 @@ -621,29 +621,30 @@ # set cache regions for beaker so celery can utilise it def setup_cache_regions(settings): + # Create dict with just beaker cache configs with prefix stripped cache_settings = {'regions': None} - for key in settings.keys(): - for prefix in ['beaker.cache.', 'cache.']: - if key.startswith(prefix): - name = key.split(prefix)[1].strip() - cache_settings[name] = settings[key].strip() + prefix = 'beaker.cache.' + for key in settings: + if key.startswith(prefix): + name = key[len(prefix):] + cache_settings[name] = settings[key] + # Find all regions, apply defaults, and apply to beaker if cache_settings['regions']: for region in cache_settings['regions'].split(','): - region = region.strip() + region = region.strip() + '.' region_settings = {} - for key, value in cache_settings.items(): + for key in cache_settings: if key.startswith(region): - region_settings[key.split('.')[1]] = value - region_settings['expire'] = int(region_settings.get('expire', - 60)) + name = key[len(region):] + region_settings[name] = cache_settings[key] + region_settings.setdefault('expire', + cache_settings.get('expire', '60')) region_settings.setdefault('lock_dir', cache_settings.get('lock_dir')) region_settings.setdefault('data_dir', cache_settings.get('data_dir')) - - if 'type' not in region_settings: - region_settings['type'] = cache_settings.get('type', - 'memory') + region_settings.setdefault('type', + cache_settings.get('type', 'memory')) beaker.cache.cache_regions[region] = region_settings