postgres version
This commit is contained in:
49
server/reloader.py
Normal file
49
server/reloader.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import importlib
|
||||
import os
|
||||
import threading
|
||||
import importlib.util
|
||||
|
||||
from __init__ import app
|
||||
|
||||
|
||||
_config_mtime = None
|
||||
_reload_lock = threading.RLock()
|
||||
|
||||
if "CONFIG" in os.environ:
|
||||
config_path = os.environ["CONFIG"]
|
||||
else:
|
||||
config_path = os.path.join(app.root_path, 'config.py')
|
||||
|
||||
config_spec = importlib.util.spec_from_file_location("server.config", config_path)
|
||||
config_module = importlib.util.module_from_spec(config_spec)
|
||||
config_spec.loader.exec_module(config_module)
|
||||
_cur_config = config_module.CONFIG
|
||||
|
||||
|
||||
def get_config():
|
||||
"""
|
||||
Returns CONFIG dictionary from config.py module.
|
||||
|
||||
If config.py file was updated since the last call, get_config() reloads
|
||||
the dictionary. If an error happens during reloading, get_config() returns
|
||||
the old dictionary.
|
||||
|
||||
:returns: the newest valid version of the CONFIG dictionary
|
||||
"""
|
||||
|
||||
global _config_mtime, _cur_config
|
||||
|
||||
cur_mtime = os.stat(config_path).st_mtime_ns
|
||||
if cur_mtime != _config_mtime:
|
||||
with _reload_lock:
|
||||
if cur_mtime != _config_mtime:
|
||||
try:
|
||||
config_spec.loader.exec_module(config_module)
|
||||
_cur_config = config_module.CONFIG
|
||||
app.logger.info('New config loaded')
|
||||
except Exception as e:
|
||||
app.logger.error('Failed to reload config: %s', e)
|
||||
|
||||
_config_mtime = cur_mtime
|
||||
|
||||
return _cur_config
|
||||
Reference in New Issue
Block a user