有时我们需要在不重启服务器的情况下加载并执行新文件。 严格来说Python没有热更功能,但今天介绍这个功能可以实现该方法,就叫:“类热更”吧 – 类似热更新 … 此处略去一万字,进入正题。 准备好新文件my_config.py内容:
def mymod():
print("我是新文件的数据")
先配置好一个服务代码,这里用了简单的sanic,先编写两个简单的接口函数:

接口函数
在get1接口中添加新文件加载处理函数 load_sour()

文件加载处理函数.png
启动服务,调用/接口:

image.png
然后将新文件my_config.py拖至server.py同级目录

新文件处理
然后调用加载新文件接口:get1

文件加载
服务端加载并执行了新文件函数mymod:

调用新文件函数.png
主要的加载处理函数:
def load_sour():
print("执行:load_sour")
# imp 从 Python 3.4 之后弃用了,建议使用 importlib 代替
# import imp
# a = imp.load_source('mymod', 'my_config.py')
import importlib
a = importlib.machinery.SourceFileLoader('mymod','my_config.py').load_module()
a.mymod()
加载新文件函数
a = importlib.machinery.SourceFileLoader('函数名', '文件名.py').load_module()
a.mymod()
文章介绍了如何在不重启服务器的情况下,使用Python的importlib模块和SourceFileLoader来实现类热更新功能。通过加载并执行新文件my_config.py中的mymod函数,展示了动态加载新文件到运行中的服务中的过程。
1850

被折叠的 条评论
为什么被折叠?



