django自动重新加载模块 源码分析
2017-06-13 23:11
543 查看
缘起
最近项目中用到了supervisord来守护django的进程,发现使用项目重启的时候,特别的慢,调试了一下,没发现问题,于是就去查看了supervisord和django的源码,最终发现问题处在django上面,相关源码位置https://github.com/linchaonan2010/django/blob/stable/1.5.x/django/utils/autoreload.py
分析原因
django服务启动的同时,会启动两个进程,一个负责监控文件的变化,一个是主进程,如果文件发生变化,则会将退出当前进程,重新启动一个子进程,而supervisord启动django的时候监控的是两个进程中的一个,所以实际上supervisord是无效的,同时还有可能会与主进程起冲突,占用端口。解决方案
取消django的reload 针对django的web服务可以添加 –noreload参数,我这边是使用了自定义命令,同时使用了django的reload,所以我不使用reload即可不使用supervisord,或者寻找其他的解决方案
相关文章推荐
- Yii2.0源码分析之——YiiBase自动加载类、引用文件(autoload)
- layui源码详细分析系列之模块加载机制
- ECClient红孩子android客户端源码分析之图片加载自动刷新listview
- 看书 Python 源码分析笔记 (十一) 模块加载机制
- 深入学习Django源码基础11 - 简要分析Django中template模块1
- skynet源码分析(1)--模块加载
- Thinkphp源码分析-命名空间自动加载
- tp5源码分析之自动加载
- 通过源码包php-5.4.9.tar.gz编译安装PHP之后,如何加载动态模块,不需要重新配置PHP
- django源码分析--03app加载过程
- Thinkphp源码分析之类的自动加载
- 深入学习Django源码基础12 - 简要分析Django中template模块2
- layui源码详细分析系列之流加载模块
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- Linux如何在系统启动时自动加载模块
- 蔡军生先生第二人生的源码分析(七十二)LLFeatureManager类加载显示特性
- Linux如何在系统启动时自动加载模块
- Linux如何在系统启动时自动加载模块
- Linux如何在系统启动时自动加载模块
- 第二人生的源码分析(七十二)LLFeatureManager类加载显示特性