原帖: /t/567079
本来选的 python 节点,
可能因为"大家", "都是", "怎样" "?" 这些关键字, 被移动到调查节点了
有个需求是可能会在运行中修改配置文档, 然后其他同样引用了该配置的模块也能拿到新的值
代码在原帖内
1
THESDZ 2019-05-24 09:55:58 +08:00
缓存中读取,避免脏读即可
|
3
besttime 2019-05-24 10:10:58 +08:00
配置中心服务了解一下?
|
4
dapang1221 2019-05-24 10:12:46 +08:00
正常应该是接受处理 USR1 信号,平滑重载更新配置缓存吧,你总不能开着文件句柄一直读,太难受了…
|
5
firejoke OP @dapang1221 我原帖内最后就是这样, 启动时先载入配置缓存, 有修改时先修改文档, 在重新加载到缓存, 但我的方式感觉读取配置时怪怪的
|
7
pmispig 2019-05-24 10:18:30 +08:00
增加一个接口,被调用时从外部拉取配置更新到内存里,我的 openrestry 就是这么操作的
|
8
firejoke OP @pmispig 那你在其他地方引用该配置的时候, 是用的时候在引用吗?
还是在开头就引用了? 也就是 from conf import xxx class X(): def xx(): XXX 还是 class X(): def xx(): from conf import xxx XXX |
9
mooncakejs 2019-05-24 10:28:24 +08:00
赞同#4
|
11
julyclyde 2019-05-24 10:33:53 +08:00
一般是 HUP 信号吧
|
12
firejoke OP @dapang1221 抱歉, 我去认真看一下 USR1 和如何应用
|
14
zgzhang 2019-05-24 11:00:03 +08:00
@pmispig openrestry 在 init-worker 阶段可以注册定时器,你这样相当于每个请求都耦合了一次配置刷新的操作
|
15
firejoke OP @dapang1221 看 USR1 的应用, 以及 uwsgi 的配置文档重启, 但那个适合静态的配置, 改一次重启一次服务,
可我只想依赖这个配置的模块能获取到新的值, 并不想重启整个服务, 因为我这只是一个工具, 并不会涉及到并发之类的 |
16
dapang1221 2019-05-24 11:47:01 +08:00
@firejoke 不是重启整个服务啊,python 里用 signal 模块可以捕获到 USR1 或是上面 11#提到的 HUP 信号,然后你自己处理就好了,并不是让系统去给你重启
|
17
leegoo 2019-05-24 13:04:15 +08:00
可以借鉴配置中心...或者说可以把配置写在数据库里面,系统文件里面都行...
|
19
raighne 2019-05-24 17:03:01 +08:00
用 apollo
|
20
lolizeppelin 2019-05-25 18:06:13 +08:00
inotify 监控配置文件,有变更就调用重载配置函数
配置文件的库的库最好支持参数设置是否可以热重载 请使用 python 里最牛逼的配置文件库 oslo.cfg |
21
firejoke OP @lolizeppelin 看 openstack 时, 看过 oslo 的用法, 没有仔细研究过, 确实可以试试
|
23
lolizeppelin 2019-05-27 11:14:42 +08:00
|
24
firejoke OP @lolizeppelin 好! 之后也要搞 openstack, 大不了我把离线包加到依赖包里, 装我这个工具的时候, 直接装进去
|