阅读本文大概需要 3.6 分钟。
有时候,我感到疲倦,因为,我每修改一处代码,想要看到改动是否生效的时候,我要先 Ctrl C 或 Kill 进程,然后重新运行,才能看到结果,改的次数多了,不仅浪费时间,降低效率,还浪费体力。有没有办法做到修改了项目使用的源码文件后,让程序自动重新运行?
肯定有办法,三方库 watchdog 可以监控文件的新增,删除,和修改,可以在这些事件发生后执行相应的动作,但它不够完美:可以对某一路径进行监听,但不能解析项目 import 了哪些文件,import 的文件不在同一路径下,需要手工配置多个路径就很麻烦,不具有通用性。
不能判断文件是否真正的修改,有时候只是保存下,文件内容并没有变化,此时不应该触发重启。
如果在同一路径,修改了项目未引用的文件,也会触发重启。
直到我用了 Django,Django 的 autoreload 机制,完美的解决了上面 3 个问题,改动代码保存后可以立即看到程序的及时反馈,大大提升了 Debug 的效率,堪称神器。
这么好的神器,能否移植到其他项目上?
能否移植,取决于 autoreload 是否与 Django 松耦合,我们先来看一下它的工作原理。
1、Django 是怎么自动重载的?
用过 Django 的朋友都知道,当你执行 python manage.py runserver 后,只要修改了项目用到的文件,