Python 配置文件加载且自动更新(watchdog),,安装依赖:pip i
Python 配置文件加载且自动更新(watchdog),,安装依赖:pip i
安装依赖:pip installwatchdog
#!/usr/bin/env python3# -*- coding: utf-8 -*-import loggingimport osimport threadingfrom configparser import ConfigParser, NoOptionErrorfrom watchdog.events import FileSystemEventHandlerfrom watchdog.observers import Observerlock = threading.Lock()class ConfigFileModifyHandler(FileSystemEventHandler): def on_modified(self, event): if os.path.relpath(event.src_path) == ‘app.config‘: Config.get_instance().load_config()class Config(object): __instance = None def __init__(self, config_file_path=None): logging.debug(‘配置初始化‘) self.config = ConfigParser() self.config_file_path = config_file_path or os.path.join(os.path.dirname(__file__), ‘../app.config‘) self.load_config() self._init_config_file_observer() def _init_config_file_observer(self): logging.debug(‘配置文件监控‘) event_handler = ConfigFileModifyHandler() observer = Observer() observer.schedule(event_handler, path=os.path.dirname(self.config_file_path), recursive=False) observer.setDaemon(True) observer.start() @staticmethod def get_instance(): if Config.__instance: return Config.__instance try: lock.acquire() if not Config.__instance: Config.__instance = Config() finally: lock.release() return Config.__instance def load_config(self): logging.debug(‘加载配置‘) self.config.read(self.config_file_path, ‘utf-8‘) def get(self, key, default=None): """ 获取配置 :param str key: 格式 [section].[key] 如:app.name :param Any default: 默认值 :return: """ map_key = key.split(‘.‘) if len(map_key) < 2: return default section = map_key[0] if not self.config.has_section(section): return default option = ‘.‘.join(map_key[1:]) try: return self.config.get(section, option) except NoOptionError: return defaultdef get(key, default=None): """ 获取配置 :param str key: 格式 [section].[key] 如:app.name :param Any default: 默认值 :return: """ return Config.get_instance().get(key, default)
Python 配置文件加载且自动更新(watchdog)
相关内容
- Python调用DLL动态链接库——ctypes使用,,最近要使用py
- python--导入其他文件夹下的模块(.py文件),,适用情况:
- 利用Python imaplib和email模块 读取邮件文本内容及附件内
- python 参数化之读取yaml文件中的内容,,一、YAML的安装:
- python对文件中的关键词查找替换,实现自动获取配置,
- python 数据库查询条件`不等于`,,1.python 数
- linux瀹氭椂浠诲姟鎵цpython鑴氭湰,,鏍囩锛?a hre
- python打乱数组顺序,,import ran
- python从txt文件中画图,,import osi
- Python eval,exac,compile,,# eval 是把字
评论关闭