Gunicorn + gevent + flask + sqlalchemy + scoped_session 高并发解决方案
Gunicorn
gunicorn 是wsgi http server,也就是web sever
它的作用: 多进程(woker) + 协程(gevent) + 管理web应用(flask)
gevent
gevent是第三方库,通过greenlet实现协程
Gunicorn + Gevent
Gunicorn支持多个woker模式,其中包括异步的Gevent
使用gevent,在guncorn的配置文件中添加参数
worker_class = 'gevent'
再使用wokers参数可以设置woker数量,即实现了多进程web 应用
workers = 2
gunicorn + gevent与monkey.patch_all()
在gunicorn初始化工作进程中,调用self.patch()方法,执行了mokey.patch_all()给第三方库打上了补丁,从而保证了非阻塞
Gevent在mokey.patch_all()的时候,已经把thread-local换成了greenlet-local,不同协程间是隔离的