gunicorn+gevent实现 flask web 应用的并行访问
来源:互联网 发布:windows磁盘碎片整理 编辑:程序博客网 时间:2024/04/30 11:54
1、 安装 gevent 和 gunicorn
pip install gevent
pip install gunicorn
2、 创建 gunicorn的配置文件(.py)
#!/usr/bin/env python
#coding:utf-8
import multiprocessing
bind = "0.0.0.0:5000"
#64-2048
backlog = 2048
workers = multiprocessing.cpu_count()*3
worker_class = "gevent"
#同步响应最长处理时间
timeout = 60
pidfile = "/usr/local/bin/ gunicorn.pid"
accesslog = "/var/log/ gunicorn_access.log"
errorlog = "/var/log/error_msg.log"
capture_output = True
gunicorn 配置见
http://docs.gunicorn.org/en/stable/settings.html
3、 代码
3.1 仅gevent 时(server.py)
from gevent.wsgi import WSGIServer
import gevent
import multiprocessing
from flask import Flask
from flask.ext.restful import Api, Resource, reqparse
def api_construct():
app = Flask(__name__)
@app.after_request
def after_request(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response
api = Api(app)
api.add_resource(fun, '/v1/', endpoint = 'so')
return app
def main():
#单进程。不能并行处理请求。
http_server = WSGIServer(('0.0.0.0',5000), api_construct(), spawn=2, environ={'wsgi.multiprocess': False})
http_server.serve_forever()
if __name__ == "__main__":
main()
python server.py 即可运行。
仅用gevent 时发现,并未实现并发,如果有一个 url 卡住,其它 url 也不能访问。网上说 gevent 可以实现并发,有哪位同学知道是怎么回事,欢迎留言交流。
3.2 改为 gunicorn+gevent方式:
from gevent.wsgi import WSGIServer
import gevent
import multiprocessing
from flask import Flask
from flask.ext.restful import Api, Resource, reqparse
def api_construct():
app = Flask(__name__)
@app.after_request
def after_request(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response
api = Api(app)
api.add_resource(fun, '/v1/', endpoint = 'so')
return app
application = api_construct()
gunicorn -c config.py server:application
多个进程处理请求,实现并发。
如果所有进程均卡住,那么服务就不可以用了。有同学知道这种情况怎么解决嘛?
- gunicorn+gevent实现 flask web 应用的并行访问
- gunicorn+gevent+nginx部署flask应用
- flask+gevent+gunicorn+nginx 初试
- 高性能框架gevent和gunicorn在web上的应用及性能测试
- 高性能框架gevent和gunicorn在web上的应用及性能测试
- 高性能框架gevent和gunicorn在web上的应用及性能测试
- 用gunicorn+gevent启动Flask项目
- gunicorn 部署 flask 应用
- flask 应用的架构和部署(flask+gunicorn+nginx)
- python 高性能web框架 gunicorn+gevent
- nginx + gunicorn + pypy + gevent 部署 web.py
- 在使用flask-script的应用上使用gunicorn
- Flask+gevent 异步 WEB 架构
- Flask+gevent 异步 WEB 架构
- bottle的gunicorn+gevent部署 和 gunicorn+meinheld 部署
- flask笔记:11:gunicorn+gevent+nginx+flask部署,使用siege进行服务器压力测试
- python web 部署:nginx + gunicorn + supervisor + flask
- Nginx + Gunicorn(+gevent) + Django
- VS2010+QT5.1+opencv2.4.5图像界面第一个程序(改了一些,现在QT5.4,OPENCV2.4.10)
- 判断是否有网,以及网络有无状态变化
- Window Functions--窗口函数
- MongoDB Java
- StringBuffer、StringBuilder类
- gunicorn+gevent实现 flask web 应用的并行访问
- php整数判断
- FaceBook登录
- 带你一起瞧瞧自定义属性以及自定义View的使用
- maven命令管理
- IPA (苹果应用程序文件格式)
- iOS7 UIWebView内存泄露问题解决方法
- QTreeView处理大量数据
- qt拖放 控件之间拖放 自定义数据