django如何检测文件更改

Gau*_*ran 2 python django

我正在尝试查看目录中.py文件的更改。我经历了现有的解决方案。我对django库如何解决此问题感到好奇。文件更改后,开发服务器将重新启动。

knb*_*nbk 7

可以在中找到该代码django.utils.autoreload。自动重新加载器使用一个单独的线程来监视已导入的任何python模块以及任何翻译文件。

如果可用inotify,则Django会使用它来监听更改事件。否则,它将每秒检查每个文件的时间戳。如果有任何更改,该过程将重新启动。

Django的autoreloader 可能不是最好的灵感来源。更好的选择可能是Watchman(具有适当的python绑定)或纯Python替代Watchdog


har*_*ard 5

快进到 2019 年 4 月:

随着Django的2.2 pywatchman作为一部分守望者,将支持和pyinotify中(即自2015年中期未维护被删除):

如果您使用 Linux 或 MacOS 并同时安装pywatchmanWatchman服务,内核信号将用于自动重新加载服务器(而不是每秒轮询文件修改时间戳)。这为大型项目提供了更好的性能、缩短了代码更改后的响应时间、更强大的更改检测并降低了功耗。

来源:django-admin

将 Watchman 与包含大型非 Python 目录(如 )的项目一起使用时node_modules,建议忽略此目录以获得最佳性能。

有关watchman documentation如何执行此操作的信息,请参阅。