使用Python进行热重新加载/交换

时间:2010-10-05 10:41:55

标签: python reload hotdeploy hotswap

我希望代码更改能够在开发过程中立即生效。如何在运行的Python(2.7)应用程序中检测更改的文件并重新加载它们?

编辑:

在阅读'Ivo van der Wijk'链接的页面后,我认为最好在代码更改时重新启动Web应用程序 - 就像Django一样。所以实际问题是:How to monitor file modifications?

3 个答案:

答案 0 :(得分:6)

我希望我的一些Python脚本具有相同的效果,所以我继续编写了SourceChangeMonitor.py脚本。您可以使用说明here找到它。如果您只想要脚本,here是直接链接

答案 1 :(得分:3)

此问题已被问及a number of times

你可以使用重载(模块),但要注意令人讨厌的副作用。例如,现有代码将基于原始代码,它不会神奇地添加新属性或基类。

答案 2 :(得分:2)

这对大多数应用程序没有意义,因为使用reload会产生副作用。此外,您花费在检测更改的代码上并重新加载所有模块的时间可能仅用于重新启动应用程序。如果您导入大量模块或包含许多子模块的项目,则会非常复杂。

在某些情况下,这是一个好主意。 Django Web框架提供了一个自动重新加载已更改模块的开发服务器(manage.py runserver)。看一下django.utils.autoreload - 它使用文件的修改时间测试所有Python文件的修改。如前所述,这对某些应用程序来说只是一个好主意。 Web应用程序有点无状态,因此可以重新加载,几乎没有副作用。