Gunicorn 启动过程源码浅析
Posted Agly_Charlie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gunicorn 启动过程源码浅析相关的知识,希望对你有一定的参考价值。
1.Gunicorn简介
Gunicorn (独角兽)是一个WSGI Server,只支持在类Unix系统上运行,来源于Ruby的unicorn项目。
Gunicorn使用prefork master-worker模型,能够与各种Wsgi Application框架协作。
2.启动demo
启动命令
python3 run_gunicorn.py -b=0.0.0.0:8000 -w=4 -k=gevent appname.wsgi
以上启动监听端口8000,worker数量4个,使用worker模式 gevent.
更详细的参数:https://docs.gunicorn.org/en/stable/settings.html
附启动文件如下:
# run_gunicorn.py
import re
import sys
from gunicorn.app.wsgiapp import run
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\\.pyw|\\.exe)?$', '', sys.argv[0])
sys.exit(run())
3.启动过程
- Gunicorn基于pre-fork模式,通过主进程来fork出工作者进程,然后由工作者进程取处理请求。所以启动过程主要包含master进程的创建和worker进程的创建。
- Gunicorn支持多种工作者进程, 每种工作者进程的运行过程不同, 所以worker 进程的启动过程时由具体的worker实现类完成的。
- 进程启动过程都有初始化信号量,Gunicorn 其实也实现对不同信号的处理方法。具体的逻辑是在循环那一阶段。这里不做进一步展开了,后续再持续更新吧。
以上是关于Gunicorn 启动过程源码浅析的主要内容,如果未能解决你的问题,请参考以下文章
flinkFlink 1.12.2 源码浅析 : yarn-per-job模式解析 JobMasger启动 YarnJobClusterEntrypoint