有个需求,就是通过建立一个开放平台,提供 restful 给第三方使用的api。想到给第三方的应用,也就是http协议的请求。就使用 python 的web框架 flask 做url路由。
部署的时候采取了简单的 nginx + uwsgi + flask 的方式。请问各位,这样的部署flask app 的性能如何,能支持多少的并发?
换成 gevent 和 tornado 会不会好一点?
我选择
Nginx + Gunicorn(with gevent) + Flask
Gunicorn(with gevent)性能和uwsgi差不多,但是纯Python,部署方便,也不需要编译uwsgi。Nginx这里只是反代+server静态文件,不做其他工作,完全由Gunicorn也可以起服务
配置可以参考: https://github.com/pythoncn/june/tree/master/etc
一个测试结果:https://ivan-site.com/2012/10/gevent-gunicorn-vs-uwsgi/
http://www.techempower.com/benchmarks/#section=data-r8&hw=i7&test=json 这是一个各种web框架压力测试的对比,你可以看一下,针对不同的场景,各个框架的表现不同,一般网站业务来看,flask基本和tornado 相差不了多少,在实时性强的业务中 tornado还是占有很大的优势
nginx + uWSGI + flask
flask可以和gevent共用的,并发会好很多。
用gevent monkey patch,可以尽可能少的修改当前代码。