导入pandas(也是numpy,matplotlib等)后烧瓶挂起

时间:2016-12-12 11:04:52

标签: python apache pandas flask hang

为什么在导入pandas lib或其他几个科学库后Flask会挂起?当它通过SSH在本地运行时仍然可以工作,但是当访问URL时,浏览器会加载并加载,没有任何反应。

3 个答案:

答案 0 :(得分:3)

解决方案适用于带Apache2服务器的Ubuntu。您必须配置以下文件:

  

/etc/apache2/sites-available/your-flask-app-file.conf

将以下行粘贴到WSGIScriptAlias:

下面
WSGIApplicationGroup %{GLOBAL}  

答案 1 :(得分:2)

经过长时间的痛苦运动,我终于可以让我的应用程序运行了。问题是当应用程序被导入.wsgi文件时构建的pandas 0.19.2

解决此问题从全局级别删除导入并在功能级别插入

import pandas as pd
....
@app.route('/getFunction', methods=["GET"])
def sample_get_function():
    movieData=pd.read_csv('someData.csv')

....
@app.route('/getFunction', methods=["GET"])
def sample_get_function():
    import pandas as pd
    movieData=pd.read_csv('someData.csv')

这不是一个很好的解决方案,但它正在运作

答案 2 :(得分:1)

@saitam的另一个解决方案是必要的,但在我的情况下还不够。

与编辑前一样:

def increase_by_one(dictio):
    for d in dictio:
        if isinstance(dictio[d], int) or isinstance(dictio[d], float):
            dictio[d] += 1
        else:
            increase_by_one(dictio[d])
    return dictio

increase_by_one({'1':2.7, '11':16, '111':{'a':5, 't':8}})

使用以下内容添加或更新/etc/apache2/sites-available/<your-flask-app>.conf

WSGIApplicationGroup

并删除或修改WSGIApplicationGroup %{GLOBAL} ,以便您拥有:

WSGIProcessGroup

当设置为其他内容时,问题仍然存在。

Some people主张将线程数设置为1,但这对我来说不是必需的。以下工作正常:

WSGIProcessGroup %{GLOBAL}

Linux版本:WSGIDaemonProcess <...> processes=2 threads=6

Pandas版本:Ubuntu 14.04.3 LTS

Python版本:0.19.2

Apache版本:3.4.3