我希望代码更改在开发过程中立即生效。如何检测更改的文件并在正在运行的 Python (2.7) 应用程序中重新加载它们?
编辑:
在阅读了“Ivo van der Wijk”链接的页面后,我认为最好在代码更改时重新启动 Web 应用程序——就像 Django 那样。所以实际的问题是:如何监控文件修改?
这对大多数应用程序没有意义,因为使用reload
. 加上您花在检测更改和重新加载所有模块的代码上的时间可能只花在重新启动应用程序上。如果您导入大量模块或有一个包含许多子模块的项目,这将非常复杂。
在某些情况下,这是一个好主意。Django Web 框架提供了一个开发服务器 ( manage.py runserver
),它会自动重新加载更改的模块。看一下django.utils.autoreload
- 它使用文件的修改时间测试所有 Python 文件的修改。如前所述,这仅适用于某些应用程序。Web 应用程序在某种程度上是无状态的,因此可以重新加载而几乎没有副作用。