Flask 查询 MongoLab 的速度非常慢

Flask exceedingly slow to query MongoLab

我有 Mongolab 数据库,其中包含小型时间序列文档的集合。

每个文档包含特定时间序列的一部分(每个文档中特定股票的 250 个每日价格值)。该集合在查询字段上建立索引。

我需要查询链接到一只特定股票的所有切片,如下所示:

cursor = db.timeseries.find({'stock':'IBM'})    # this line executes in very small time
slices = [slice for slice in cursor]            # this line takes 10 seconds

# to give an idea, cursor.count() could be anywhere between 10 and 40

如果我在 python 解释器中 运行 这段代码,它会在不到 300 毫秒内完成。

如果我 运行 相同的代码,在相同的数据库上,在本地的 Flask 运行ning 中,需要 10 秒 (!!! ).问题不在于使用 find() 选择数据,它工作正常,而是查询所有数据。

值得注意的是,如果我将本地 Flask 应用程序连接到 本地 mongodb,它 运行 没问题

我没有发现网上提到的类似 Flask 特有的问题。有什么线索吗?

我用一种有点幼稚的方式解决了这个问题:

而不是像往常一样依赖 Flask 应用程序中的 Flask-PyMongo, I simply used plain pymongo,它运行得非常快:

快速 - pymongo 版本

# use pymongo in a classic way

mongolab_uri = 'mongodb://<username>:<password>@dsxxxxxx.mongolab.com:55802/<dbname>'
connection = pymongo.MongoClient(host=mongolab_uri)        
db = connection['<dbname>']
coll = db.<collection_name>

# from here query and do whatever you need to  

慢 - Flask-Pymongo 版本

from flask.ext.pymongo import PyMongo
app.config['MONGO_URI'] = 'mongodb:...'
mongo = PyMongo(app)
coll = mongo.db.<collection_name>