def upgrade(self, cfg):
fields = []
fields_env = {}
# ENV gets priority: ENV < config.json
for name, data in self.base_config.items():
if name not in cfg:
cfg[name] = data
fields.append(name)
if name in os.environ:
# Use JSON decoder to get same behaviour as config file
fields_env[name] = json.JSONDecoder().decode(os.environ[name])
logger.info("Using ENV setting %s=%s", name, fields_env[name])
# Only rewrite config file if new fields added
if len(fields):
logger.warn("Upgraded config, added %d new field(s): %r", len(fields), fields)
self.save(cfg)
# Update in-memory config with environment settings
cfg.update(fields_env)
return cfg
评论列表
文章目录