【问题标题】:Why does adding adding ```flask_sockets.worker``` to gunicorn slow down gRPC client connection?为什么添加```flask_sockets.worker```到gunicorn会减慢gRPC客户端连接?
【发布时间】:2020-01-08 11:39:46
【问题描述】:

我正在构建一个连接到后台 gRPC 服务的烧瓶服务器。我计划使用 gunicorn 来服务于烧瓶应用程序。添加flask_sockets.worker 会大大降低速度!

这是一个最小的工作示例,

import grpc                                                                                                                                                            
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    data = b"Hello, World!\n"

    channel = grpc.insecure_channel('{0}:{1}'.format('localhost', 40051))
    try:
        grpc.channel_ready_future(channel).result(timeout=1)
        data += b"\nChannel ready"
    except grpc.FutureTimeoutError:
        data += b"\nChannel not ready"
    return data

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

如果我运行应用程序,

gunicorn -w 4 mwe:app -b :8000

一切似乎都很好。但如果我改为使用,

gunicorn -w 4 mwe:app -b :8000 -k flask_sockets.worker

页面需要永远加载。我需要使用flash_sockets 来获得一些额外的功能。终于明白了,

[CRITICAL] WORKER TIMEOUT (pid:17489)
[WARNING] Worker graceful timeout (pid:17489)

页面加载!我该如何解决这个问题? 我的环境有,

Click==7.0
Flask==1.1.1
Flask-Sockets==0.2.1
gevent==1.4.0
gevent-websocket==0.10.1
greenlet==0.4.15
grpcio==1.23.0
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
pkg-resources==0.0.0
six==1.12.0
Werkzeug==0.15.5

【问题讨论】:

    标签: python flask gunicorn grpc grpc-python


    【解决方案1】:

    有点摸不着头脑,你能尝试使用更新得多的 gevent 版本吗?

    gevent==20.5.1

    https://pypi.org/project/gevent/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-25
      • 2021-09-27
      • 1970-01-01
      • 2020-09-23
      • 2018-09-03
      • 2019-10-05
      • 1970-01-01
      • 2017-05-25
      相关资源
      最近更新 更多