通过定时器实现配置文件热更新

简介: 配置文件修改及时生效

配置文件修改后,要达到及时生效,热加载的目的,那么可以通过2种方式实现

  1. 定时器循环,查看文件更新时间,如果发现有修改,那么重新加载
  2. 监听信号,文件更改后触发信号,通过捕获信号,再重新加载


例如,线上的应用日志级别为 info ,出现故障后,你需要开启 debug 来排查日志,但是把日志级别改成 debug ,那么你不得不重启应用,可能故障现象就不存在或不好重现了,而且重启服务可能会影响用户体验。


以下我就介绍一种定时器循环的方式来实现吧。

packagemainimport (
"encoding/json""fmt""io/ioutil""log""os""time")
//全局自定义拦截varintercept []Intercept//文件时间varftint64varfilenamestring="/Users/jiangyd/mygo/src/gi/intercept.json"typeInterceptstruct {
Urlstring`json:"url"`Methodstring`json:"method"`RespHeadermap[string]string`json:"resp_header"`RespBodyinterface{}       `json:"resp_body"`RespCodeint`json:"resp_code"`}
//读取自定义响应文件funcRead_resp() {
intercept_data, err :=ioutil.ReadFile(filename)
iferr!=nil {
log.Fatalln(err)
    }
err=json.Unmarshal(intercept_data, &intercept)
iferr!=nil {
log.Fatalln(err)
    }
}
funcmain() {
//启用定时器t :=time.NewTicker(1*time.Second)
gofunc() {
for {
_, ok :=<-t.Cifok {
fileinfo, err :=os.Stat(filename)
iferr!=nil {
fmt.Println(err)
                }
iffileinfo.ModTime().UnixNano() >ft {
Read_resp()
ft=fileinfo.ModTime().UnixNano()
                }
            }
        }
    }()
//循环打印for {
time.Sleep(1*time.Second)
iflen(intercept)>0{
fmt.Println(intercept[0].RespBody)
        }
    }
}

配置文件

[{
"url": "http://test.cloudcare.cn/api/v1/workspace/member/list",
"method": "get",
"resp_body": {"msg": "c"},
"resp_header": {"Content-Type": "application/json"},
"resp_code": 200}]


运行程序后,我编辑配置文件内容 resp_body  可以被重新加载到

map[msg:m]
map[msg:a]
map[msg:a]
map[msg:a]
map[msg:b]
map[msg:c]
map[msg:c]
目录
相关文章
|
缓存 调度 数据库
Python中的定时器用法:Timer定时器和schedule库
Python中的定时器用法:Timer定时器和schedule库
1345 0
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
3340 3
|
机器学习/深度学习 编解码 固态存储
超轻目标检测 | 超越 NanoDet-Plus、YOLOv4-Tiny实时性、高精度都是你想要的!
超轻目标检测 | 超越 NanoDet-Plus、YOLOv4-Tiny实时性、高精度都是你想要的!
1130 0
超轻目标检测 | 超越 NanoDet-Plus、YOLOv4-Tiny实时性、高精度都是你想要的!
C++11 可变模板参数
C++11 可变模板参数
99 0
|
11月前
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
安全 测试技术 C++
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化1
【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化
288 7
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能心理健康评估
使用Python实现深度学习模型:智能心理健康评估
556 3
使用Python实现深度学习模型:智能心理健康评估
|
Linux Python
用python扫描linux开放的端口(3种方式)
这篇文章介绍了三种使用Python实现Linux端口扫描的方法,包括基础版端口扫描、全端口扫描和多线程扫描技术。
473 16
|
程序员 Linux Android开发
libYuv编译
安卓使用NDK编译libYuv库
887 0