目录
启动
# 启动命令:
python manage.py runserver
# 运行先文件的handler函数
django\core\management\commands\runserver.py
先绑定一些参数最后,执行实例的run方法,user_reloader可以在启动命令时添加,让代码修改服务不重启。

aotureload模块负责控制线程的启动与重启任务

进入到main中运行python_reloader函数,

若环境变量没有设置(正常情况下不会设置),进入到restart_with_reloader中:

修改代码时会自动重启在原因在这个函数中,subprocess.call命令启动了一个子进程,autoreload模块中有线程启动监控文件改变情况,若改变则杀死子进程。
args是启动命令参数列表,new_environ添加了"RUN_MAIN"参数,使子进程会进入到python_reloader(上一个函数)的if os.environ.get(“RUN_MAIN”) == “true”:中。
在inner_run中处理请求类和运行启动函数

run函数中就是WSGI的server_forever函数了

server_forver函数中就是select循环,这里注意,本地调试时候使用的是select循环不是poll和epoll(以后整理一篇三者的区别)

到这Django本地正常运行起来了。通过select监控端口请求,交给Django的handler处理请求。
本文详细介绍了Django项目的本地启动过程,从`python manage.py runserver`命令开始,讲解了如何执行handler函数,自动重载机制以及WSGI服务器的`server_forever`函数中的select循环。在代码修改时,autoreload模块会监控文件变化并自动重启服务。整个启动流程确保了开发中的便捷性和效率。
1679

被折叠的 条评论
为什么被折叠?



