Python 配置文件加载且自动更新(watchdog)
安装依赖:pip install watchdog
#!/usr/bin/env python3
# -*- coding: utf-8 -*- import logging
import os
import threading
from configparser import ConfigParser, NoOptionError
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer lock = 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 default def get(key, default=None):
"""
获取配置
:param str key: 格式 [section].[key] 如:app.name
:param Any default: 默认值
:return:
"""
return Config.get_instance().get(key, default)
Python 配置文件加载且自动更新(watchdog)的更多相关文章
- asp.netcore 深入了解配置文件加载过程
前言 配置文件中程序运行中,担当着不可或缺的角色:通常情况下,使用 visual studio 进行创建项目过程中,项目配置文件会自动生成在项目根目录下,如 appsettings.json, ...
- .net core 深入了解配置文件加载过程
前言 配置文件中程序运行中,担当着不可或缺的角色:通常情况下,使用 visual studio 进行创建项目过程中,项目配置文件会自动生成在项目根目录下,如 appsettings.json, ...
- Spring Boot 2.4.0正式发布,全新的配置文件加载机制(不向下兼容)
千里之行,始于足下.关注公众号[BAT的乌托邦],有Spring技术栈.MyBatis.JVM.中间件等小而美的原创专栏供以免费学习.分享.成长,拒绝浅尝辄止.本文已被 https://www.you ...
- bash 的配置文件加载顺序
bash配置文件的加载顺序和登陆方式有关,下面先介绍下登陆方式. 1 登陆方式有2种 登陆式SHELL: su - oracle su -l oracle 正常从终端登陆 非登录式SHELL: ...
- Heka 的配置文件加载逻辑
Heka 使用的是 TOML 格式的配置文件, 有关 golang 加载 TOML 配置文件的技术请参看: http://www.cnblogs.com/ghj1976/p/4082323.html ...
- python 模块加载
python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...
- Spring使用环境变量控制配置文件加载
项目中需要用到很多配置文件,不同环境的配置文件是不一样的,因此如果只用一个配置文件,势必会造成配置文件混乱,这里提供一种利用环境变量控制配置文件加载的方法,如下: 一.配置环境变量 如果是window ...
- [Eclipse] - 集成JBoss7热加载和自动发布
使用Eclipse + JBoss开发时,总是要重启项目或JBoss,烦人.下面方法可以很简单的实现Eclipse + JBoss热加载和自动发布. 我的环境是JBoss 7.1.1 Final 1) ...
- Pace.js – 超赞的页面加载进度自动指示和 Ajax 导航效果
在页面中引入 Pace.js 和您所选择主题的 CSS 文件,就可以让你的页面拥有漂亮的加载进度和 Ajax 导航效果.不需要挂接到任何代码,自动检测进展.您可以选择颜色和多种效果,有简约,闪光灯, ...
随机推荐
- 【转】Pro Android学习笔记(五三):调试和分析(1):Debug视图和DDMS视图
目录(?)[-] Debug视图 DDMS视图 查看应用运行状态 进入debug状态 HPROF Thread信息 Method信息 Stop 截图 UI层次架构信息 其它的 Tab中提供的功能 我们 ...
- 人物-IT-雷军:雷军
ylbtech-人物-IT-雷军:雷军 雷军 (全国工商联副主席,小米科技创始人.董事长) 雷军,1969年12月16日出生于湖北仙桃,毕业于武汉大学,是中国大陆著名天使投资人. 雷军作为中国互联网 ...
- 移植完linux-3.4.2内核,启动系统后使用命令ifconfig -a查看网络配置,没有eth0
问题: / # ifconfig / # ifconfig eth0 ifconfig: eth0: error fetching interface information: Device not ...
- popup的简单应用举例
一.首先说一下自执行函数 1. 立即执行函数是什么?也就是匿名函数 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 2.popup的举例 点击,弹出一个新的窗口.保存完事,页面不刷新数据就返 ...
- css菜鸟学习之block,inline和inline-block概念和区别
block,inline和inline-block概念和区别 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) ...
- j++与++j
(j++)+(++j)+(++j) 核心部分汇编代码 执行顺序j原始值为5,存放在栈的ebp-4中;q无初始值,存放在栈的ebp-8中先执行一次j自增赋值++j ;j=6执行第一个加法运算;值存放在C ...
- hive sql 查询 Child Error 错误追究
Diagnostic Messages for this Task: java.lang.Throwable: Child Error at org.apache.hadoop.map ...
- 利用Ssocks访问国外网站(yutube/google等)
***开源项目:https://github.com/***/ 本例使用的是针对windows系统的c-sharp版本:https://github.com/***/***-windows 运行*** ...
- C++知识点总结(三)
1.字符串查找字符函数strchr strchr函数原型:extern char*strchr(const char *s,char c); 功能:查找字符数组s中首次出现字符c的位置 说明:返回首次 ...
- C++之string类
1.String对象的初始化 string s1; 默认构造函数,s1为空串 string s4(n, 'c'); 将s4初始化为字符c的n个副本 string s ...