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 启动过程源码浅析的主要内容,如果未能解决你的问题,请参考以下文章

Gunicorn 启动过程源码浅析

gunicorn 多种工作模式

浅析Android Activity的启动过程

flinkFlink 1.12.2 源码浅析 : yarn-per-job模式解析 JobMasger启动 YarnJobClusterEntrypoint

ThreadPoolExecutor任务提交过程源码浅析

gunicorn Arbiter 源码解析