检查所有导入的Python模块中的代码变更
几乎每个Python的网页框架都有一个简单的服务器,它可以运行一个叫做wsgi的应用程序,并且每次源代码发生变化时,都会自动重新加载导入的模块。我知道我可以查看代码来了解这是怎么实现的,但那可能需要一些时间,我只是出于好奇在问。有没有人知道这是怎么做到的?
2 个回答
1
reload()这个功能不太好用。“重新加载”通常是通过分叉(forking)来实现的。
要真正实现“真实”的reload()功能是非常困难的,即使是最认真的尝试,比如twisted.python.rebuild,也并不完美。
2
作为其中一个重载机制的作者(就是在werkzeug里的那个),我可以告诉你,这个机制并不好用。所有的重载机制其实都是先复制一份进程,然后如果有监控线程发现某个模块在文件系统上发生了变化,就会重启这个复制的进程。
直接使用 reload()
是不行的,因为重新加载的模块的引用并不会被更新。