Commit 27b1ff43 authored by ibuler's avatar ibuler

[Update] 修改配置支持dict,list配置

parent 8eeb3d50
...@@ -287,13 +287,27 @@ class Config(dict): ...@@ -287,13 +287,27 @@ class Config(dict):
rv[key] = v rv[key] = v
return rv return rv
def convert_type(self, k, v):
default_value = self.defaults.get(k)
if default_value is None:
return v
tp = type(default_value)
try:
if tp in [list, dict]:
v = json.loads(v)
else:
v = tp(v)
except Exception:
pass
return v
def __getitem__(self, item): def __getitem__(self, item):
try: try:
value = super(Config, self).__getitem__(item) value = super(Config, self).__getitem__(item)
except KeyError: except KeyError:
value = None value = None
if value is not None: if value is not None:
return value return self.convert_type(item, value)
value = os.environ.get(item, None) value = os.environ.get(item, None)
if value is not None: if value is not None:
if value.isdigit(): if value.isdigit():
...@@ -302,7 +316,7 @@ class Config(dict): ...@@ -302,7 +316,7 @@ class Config(dict):
value = False value = False
elif value.lower() == 'true': elif value.lower() == 'true':
value = True value = True
return value return self.convert_type(item, value)
return self.defaults.get(item) return self.defaults.get(item)
def __getattr__(self, item): def __getattr__(self, item):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment