Dmi*_*uev 5 python cprofile flask gunicorn snakeviz
我将 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)
Run Code Online (Sandbox Code Playgroud)
在这里我发现 start_time 和 end_time 之间的延迟可以达到 2 分钟。
我读过有关使用 Flask 的 Werkzeug 作为生产服务器的信息,因此我尝试将 Gunicorn 作为替代方案 - 同样的事情。
我觉得我的问题有点类似于这个,不同的是另一台服务器没有解决问题。
我尝试使用cProfile和SnakeViz分析应用程序,但使用非生产 Werkzeug 服务器 - 因为我不知道如何分析在 Gunicorn 上运行的 python 应用程序。(也许这里有人知道怎么做?)
我的 POST 请求包含描述和文件。该文件的大小可能会有所不同,但日志显示无论文件大小如何,问题都会重现。
人们通常也说Flask应该用在Nginx-[普通服务器]-flask组合中,但我使用Openshift内部的服务,我怀疑这是否有意义。(HaProxy 作为平衡器工作)
所以我的设置:Alpine 3.8.1 Gunicorn:workers:3 线程:1
当我调用它时,引擎盖下会发生什么?
request.form.get('requestDescription')
Run Code Online (Sandbox Code Playgroud)
如何在 Gunicorn 下分析 Python 代码?有没有其他人遇到过这样的问题?
任何帮助将不胜感激
小智 0
我也确实面临这个问题。我正在使用 上传视频文件request.post()。事实证明视频上传不是问题。
时间瓶颈是request.form.get(). 虽然我仍在尝试解决问题,但您可以使用Flask Monitoring Dashboard来对代码进行时间分析
return self._sock.recv_into(b)事实证明,如果您使用分析器,那么在引擎盖下
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |