首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gunicorn限制服务器性能

Gunicorn限制服务器性能
EN

Stack Overflow用户
提问于 2020-09-05 13:40:54
回答 1查看 522关注 0票数 1

我已经开发了一个酒瓶应用程序,它在开发阶段很好地工作,但当我建立生产过程与Gunicorn,性能下降了很多。

我跟随本教程和Gunicorn一起制作电影。

我的应用程序使用socket-io,因此服务器按照设计的开发模式实时捕获请求,但是使用Gunicorn时,请求甚至延迟了很多,或者根本没有到达服务器。

我以不同的方式运行Gunicorn,更改了工作人员、线程和应用程序,如下所示。

代码语言:javascript
复制
sudo gunicorn --bind 0.0.0.0:5000 --workers 2 wsgi:app
sudo gunicorn --bind 0.0.0.0:5000 --workers 2 app:app

sudo gunicorn --bind 0.0.0.0:5000 --workers 3 --threads 3 wsgi:app
sudo gunicorn --bind 0.0.0.0:5000 --workers 3 --threads 3 app:app

sudo gunicorn --bind 0.0.0.0:5000 --workers 8 --threads 4 wsgi:app
sudo gunicorn --bind 0.0.0.0:5000 --workers 8 --threads 4 app:app

我的wsgi.py

代码语言:javascript
复制
from app import app

if __name__ == '__main__':
    app.run()

我的app.py

代码语言:javascript
复制
#!/usr/bin/env python
from flask import Flask
from flask_socketio import SocketIO
    
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
app.url_map.strict_slashes = False
socketio = SocketIO(app)

from control.control import *
from video_streaming import video_streaming_blueprint
app.register_blueprint(video_streaming_blueprint)

def disable_logs(app, disable):
    import logging
    log = logging.getLogger('werkzeug')
    log.disabled = disable
    app.logger.disabled = disable

if __name__ == '__main__':
    disable_logs(app=app, disable=True)
    socketio.run(app=app, host='0.0.0.0', debug=False)
  • 服务器在本地机器上运行.
EN

回答 1

Stack Overflow用户

发布于 2020-09-06 13:17:57

Flask包有详细的部署指令

要获得良好的性能,需要将WebSocket添加到服务器中。为此,您将不得不使用一个异步工作人员进行gunicorn,无论是gevent还是eventlet。

使用多个工作人员是可能的,但通常不需要使用,因为异步工作人员处理他们自己的一致性。如果您确实希望使用多个工作人员,那么需要添加一个负载均衡器(如nginx )和一个消息队列(如redis或rabbitmq )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63754543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档