加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

如何实现代码热更新

发布时间:2021-04-18 13:54:06 所属栏目:评论 来源:互联网
导读:过 Python 虚拟机、函数机制和类机制的学习,我们对 Python 程序执行过程的动态性已经了如指掌: 在运行时,Python 可以动态创建 函数 对象; 在运行时,Python 可以动态创建 类 对象; 在运行时,Python 可以修改 函数 对象,改变它的行为; 在运行时,Python

过 Python 虚拟机、函数机制和类机制的学习,我们对 Python 程序执行过程的动态性已经了如指掌:

  • 在运行时,Python 可以动态创建 函数 对象;
  • 在运行时,Python 可以动态创建 类 对象;
  • 在运行时,Python 可以修改 函数 对象,改变它的行为;
  • 在运行时,Python 可以修改 类 对象,改变它的行为;
  • 在运行时,Python 可以动态编译代码并加入到虚拟机中执行;

借助这些特性,我们可以实现程序运行时动态更新代码,也就是 代码热更新 !

对于一般程序而言,想要更新代码只有重启一条路。因此,拥有热更新能力的 Python 可以实现很不可思议的功能,具体如何进行呢?—— 我们从猴子补丁说起。

猴子补丁

猴子补丁 ( monkey patch )大家应该都听说过,这是一种在运行时添加、修改代码的技术,而无需修改源码。

json 序列化是一个很常见的操作,在 Python 可以这样进行onify 函数用于响应 json 数据,它调用标准库 json 模块对数据进行 json 序列化,可 flask 并不是我们开发的。

好在,利用 Python 执行过程的动态特性,我们可以在运行时替换 json 模块的相关函数实现。下面,我们编写 patch_json 函数,实现 dumps 和 loads 函数的替换:此,许多应用猴子补丁的程序,在开头处便要执行替换逻辑,确保类似的现象不会发生。

猴子补丁的应用范围很广,一般用来特换类库实现或者在单元测试中进行 mock 。诸如greenlet 采用猴子补丁将阻塞的库函数替换成非阻塞的版本:

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读