现在,我们已经把一个Web App的框架完全搭建好了,从后端的API到前端的MVVM,流程已经跑通了。
在继续工作前,注意到每次修改Python代码,都必须在命令行先Ctrl-C停止服务器,再重启,改动才能生效。
在开发阶段,每天都要修改、保存几十次代码,每次保存都手动来这么一下非常麻烦,严重地降低了我们的开发效率。有没有办法让服务器检测到代码修改后自动重新加载呢?
Django的开发环境在Debug模式下就可以做到自动重新加载,如果我们编写的服务器也能实现这个功能,就能大大提升开发效率。
可惜的是,Django没把这个功能独立出来,不用Django就享受不到,怎么办?
其实Python本身提供了重新载入模块的功能,但不是所有模块都能被重新载入。另一种思路是检测mand = argv path = os.path.abspath('.') start_watch(path, None)
一共50行左右的代码,就实现了Debug模式的自动重新加载。用下面的命令启动服务器:
$ python pymonitor.py wsgiapp.py或者给pymonitor.py加上可执行权限,启动服务器:
$ ./pymonitor.py wsgiapp.py在编辑器中打开一个py文件,修改后保存,看看命令行输出,是不是自动重启了服务器:
$ ./pymonitor.py wsgiapp.py [Monitor] Watching directory /Users/michael/Github/awesome-python-webapp/www...[Monitor] Start process python wsgiapp.py......INFO:root:application (/Users/michael/Github/awesome-python-webapp/www) will start at 0.0.0.0:9000...[Monitor] Python source file changed: /Users/michael/Github/awesome-python-webapp/www/apis.py[Monitor] Kill process [2747]...[Monitor] Process ended with code -9.[Monitor] Start process python wsgiapp.py......INFO:root:application (/Users/michael/Github/awesome-python-webapp/www) will start at 0.0.0.0:9000...Try