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