gunicorn flask的请求流程

当运行gunicorn这个命令启动flask的时候

首先回去调用gunicorn/app/wsgiapp中的run方法

回去调用run()方法,这个run方式本质是gunicorn/arbiter中的run()方法

主要就关注其中manage_workers()方法

很明显调用了spawn_workers()方法,这个方式只是遍历了spawn_worker()。因此我们直接看spawn_worker()方法


可以发现 初始化了一个workclass,这个worker是gunicorn/workers/sync。为什么是使用这个因为在gunicorn/config中的worker_class默认使用的SyncWorker


好了接下来我们说一下worker,这些worker本质上都是为了处理一个一个request的

看到respiter = self.wsgi(environ, resp.start_response)这个了吗,这就是gunicorn符合wsgi的内涵。这个吧当前的环境和一个response传进去,当然传出了的也是response。

我们看看这个方法是那里呢?

寻找了一下是在生成worker的时候传入的app中获取的。

那么我们来看一下这个app到底是什么东西,在gunicorn中的Arbiter初始化函数中有一句

这个app本质就是从外部初始化传进来的,寻找这个类常初始化的地方gunicorn/app/base中

感情把自己的实例传进去了,不过在这里也找到了wsgi()方法

这个load()方法是子类gunicorn/app/wsgiapp中实现的


最后看一下load_wsgiapp()

他的意思就是把你在命令中的app实例导入。这里最后提一下在flask中的实现,这个是FLASK类在flask/app.py中


因为这个类实现了__call__方法所以使用实例传入参数以后就来到了flask框架进行request处理。


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值