Flask RESTful API请求,Broken pipe [Errno 32]!

时间:2016-01-24 14:12:07

标签: python mongodb rest flask pymongo

我是网络开发的新手,我正在尝试使用Flask微框架创建RESTful Web服务。

这是我的代码:

app = Flask(__name__)       

client = MongoClient()
db = client.markets

def toJson(data):
    return json.dumps(data, default=json_util.default)

@app.route('/', methods=['GET'])

def get_tasks():
    cursor = db.europe.find()
    list = []

    for i in cursor:
        list.append(i)

    return toJson(list)

当我从浏览器发送请求时,它会一直等待服务器并且不会返回任何内容。

最终我会看到终端中运行的烧瓶服务器会给我:[Errno 32]管道坏了。

我的收藏有150万个条目,每个条目约有20个属性。可能是因为请求太大了?

提前致谢。

1 个答案:

答案 0 :(得分:0)

Broken pipe表示您的刻录过程想要与之交谈的socketpipe的另一端已经死亡。考虑到您正在与数据库交互,很可能数据库已终止连接或连接因其他原因而死亡。

可能你应该分析你在db上运行的查询,因为代码本身似乎没有明显的问题。

尝试手动运行MongoDB上的查询,看看会发生什么。查询是否成功返回?

您提到需要花费大量时间才能收到错误消息。可能是您的架构中缺少某些索引或未正确使用这些索引会导致查询执行速度非常慢,并且在等待很长时间后会达到超时(f.e。maxTimeMS)?