【问题标题】:Slow Flask on mod_wsgi on openshiftopenshift上mod_wsgi上的慢烧瓶
【发布时间】:2013-01-29 20:35:06
【问题描述】:

我在 openshift 上的 Flask 应用程序存在一些性能问题。
需要从数据库中获取一些图像并将它们显示在网页上。和 为此,我创建了一个简单的方法:

@app.route('/getImage/')
def getImageFromUrl(url=None):
    return make_response(getImageFromDb(request.args['url']));

每页最多有 10 张图片。问题是这很慢......非常慢。
在我的本地机器上,从 app.run() 开始(即使在调试模式下)它非常快,所以我认为 mod_wsgi 中有一些东西。
日志文件中也有这些错误消息:

Exception KeyError: KeyError(140116433057760,) in <module 'threading' from '/usr/lib64/python2.6/threading.pyc'> ignored

 [error] server reached MaxClients setting, consider raising the MaxClients setting

发生了什么,我应该怎么做才能加快速度?

【问题讨论】:

    标签: python flask mod-wsgi openshift


    【解决方案1】:

    Exception KeyError 是由 gevent 引起的,我猜应该是更多有问题的代码 :) 为了避免它首先导入 gevent
    server reached MaxClients setting 似乎是 Apache 错误,应该使用日志和设置进行调查MaxClients 和 ServerLimt。

    【讨论】:

      【解决方案2】:

      KeyError 通常是因为您使用的是旧版本的 mod_wsgi。使用 mod_wsgi 3.3 或更高版本,该版本进行了更改以适应导致此问题的 Python 中所做的更改。

      【讨论】:

      • 不幸的是我无法更新 mod_wsgi。我正在使用 OpenShift,所以它已经配置好了。看来我得等更新了。