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,不同协程间是隔离的

本文介绍了如何利用Gunicorn、Gevent、Flask和SQLAlchemy的scoped_session来实现Python web应用的高并发解决方案。Gunicorn通过多进程和协程支持提高性能,Gevent通过greenlet实现非阻塞IO。Gunicorn+Gevent配合使用,通过monkey.patch_all()确保非阻塞。同时,Flask结合SQLAlchemy的scoped_session确保了数据库操作的安全性,使用TLS或greenlet-local确保不同请求间的session隔离。
最低0.47元/天 解锁文章
1770

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



