【发布时间】:2019-04-26 04:18:29
【问题描述】:
我将 Flask 用于我的 Web Api 服务。
发现我的服务有时(1/100 个请求)响应非常慢(几秒钟),我开始调试,这表明有时服务在读取请求字段时会挂起。
@app.route('/scan', methods=['POST'])
def scan():
start_time = time.time()
request_description = request.form.get('requestDescription')
end_time = time.time()
app.logger.debug('delay is ' + end_time-start_time)
在这里我发现 start_time 和 end_time 之间的延迟最长可达 2 分钟。
我读过有关使用 Flask 的 Werkzeug 作为生产服务器的信息,因此我尝试使用 GUnicorn 作为替代方案 - 同样的事情。
我觉得我的问题和this one有点相似,不同的是另一台服务器没有解决问题。
我尝试使用 cProfile 和 SnakeViz 来分析应用程序,但使用非产品 Werkzeug 服务器 - 因为我不知道如何分析运行在G独角兽。 (也许这里有人知道怎么做?)
我的 POST 请求包含描述和文件。文件大小可能不同,但日志显示无论文件大小如何,问题都会重现。
人们通常也说Flask应该用在Nginx-[普通服务器]-flask组合中,但是我在Openshift内部使用服务,我怀疑这有什么意义。 (HaProxy 用作平衡器)
所以我的设置: 高山 3.8.1 G独角兽: 工人:3 线程:1
当我调用它时,底层会发生什么?
request.form.get('requestDescription')
如何在 GUnicorn 下分析 Python 代码? 有没有其他人遇到过这样的问题?
任何帮助将不胜感激
【问题讨论】:
标签: python flask gunicorn cprofile snakeviz