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>
我有 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>