django如何检测文件更改

时间:2017-03-31 12:40:54

标签: python django

我试图在目录中查看.py文件的更改。 我经历了existing solution。 我很好奇django库如何解决这个问题。在文件更改时重新启动开发服务器。

2 个答案:

答案 0 :(得分:6)

代码可在django.utils.autoreload中找到。 autoreloader使用一个单独的线程来监视已导入的任何python模块以及任何转换文件。

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

Django的自动加载器may not be the best source of inspiration。更好的选项可能是Watchman(使用适当的python绑定)或pure-python替代Watchdog

答案 1 :(得分:1)

快进到2019年4月:

支持django 2.2 pywatchman作为Watchman的一部分,并删除pyinotify(即unmaintained since mid 2015):

  

如果您使用的是Linux或MacOS,请同时安装pywatchman和   Watchman服务,内核信号将用于自动重新加载服务器   (而不是每秒轮询文件修改时间戳)。此优惠   在大型项目中具有更好的性能,减少了代码更改后的响应时间,   更强大的变更检测功能,并减少了功耗。

来源:django-admin

  

在包含大型非Python的项目中使用Watchman时       像node_modules这样的目录,建议忽略此目录       以获得最佳性能。

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