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