Python 当其中一个代码文件发生更改时,自动重新加载Django的规则是什么?

Python 当其中一个代码文件发生更改时,自动重新加载Django的规则是什么?,python,django,Python,Django,我注意到当我的视图.py文件更改时,/manage.py runserver会自动重新加载。驱动它的底层代码是如何工作的?自动Django服务器重启: Django尝试每秒轮询文件修改时间戳。如果它看到有任何变化。它会重新启动服务器 所以基本上,Django服务器每秒检查每个文件的修改时间戳。如果它看到其中任何一个发生了变化,就会触发服务器重启 但是,添加新文件不会触发重新启动,因此在这种情况下,您必须自己重新启动服务器 异常:如果您正在使用Linux并安装pyinotify,内核信号将用于自动

我注意到当我的
视图.py
文件更改时,
/manage.py runserver
会自动重新加载。驱动它的底层代码是如何工作的?

自动Django服务器重启:

Django尝试每秒轮询文件修改时间戳。如果它看到有任何变化。它会重新启动服务器

所以基本上,Django服务器每秒检查每个文件的修改时间戳。如果它看到其中任何一个发生了变化,就会触发服务器重启

但是,添加新文件不会触发重新启动,因此在这种情况下,您必须自己重新启动服务器

异常:如果您正在使用
Linux
并安装
pyinotify
,内核信号将用于自动加载服务器

根据,

如果您正在使用
Linux
并安装
pyinotify
,内核信号将 用于自动加载服务器(而不是轮询文件修改 时间戳(每秒)。这样可以更好地扩展到大型项目, 减少对代码修改的响应时间,更稳健的更改 检测和减少电池使用

重新启动服务器时执行的系统检查:

用于对Django项目执行检查

系统检查框架是一组用于验证的静态检查 Django项目。它检测常见问题并提供如何解决的提示 来修复它们


当启动服务器时,每次在服务器运行时更改Python代码时,系统检查框架都会检查整个Django项目是否存在一些常见错误。如果发现任何错误,它们将被打印到标准输出。

我不确定是否有“规则”,但由于Python是一种解释性语言,我认为它只是检测它正在执行的文件何时发生更改,比如编辑和保存时。我感兴趣的是它是如何做到这一点的(
inotify
?对其进行一些有趣的抽象?)它是如何决定编辑一个给定的文件是否会导致重新加载的。@Brobin-你在执行python文件时是否尝试过编辑它?不是这样的。一旦python文件运行,它就不再需要该文件了……除非你得到一个未捕获的异常,然后你会得到一个非常有趣的带有混乱行号的回溯。@NightShadeQueen我说的是Django上下文。它会在每个请求上重新加载每个文件。@Brobin不,它不会。在这方面,开发服务器的操作就像一个真正的服务器一样。模块会在请求之间持久存在,您可以通过在一个请求中设置全局变量并在另一个请求中检查来轻松验证。不幸的是,如果在g使用虚拟机,例如vagrant/virtualbox。如果没有
pyinotify
runserver
会导致明显的额外负载。但是,来宾上的
pyinotify
无法获取主机上的更改。。。