Python 烧瓶查询速度非常慢

Python 烧瓶查询速度非常慢,python,mongodb,flask,pymongo,mlab,Python,Mongodb,Flask,Pymongo,Mlab,我有一个Mongolab数据库,其中包含一个关于小型timeseries文档的集合 每个文档包含特定时间序列的一部分(每个文档中特定股票的250个每日价格值)。集合在查询字段上建立索引 我需要查询链接到一个特定股票的所有切片,如下所示: cursor = db.timeseries.find({'stock':'IBM'}) # this line executes in very small time slices = [slice for slice in cursor]

我有一个Mongolab数据库,其中包含一个关于小型timeseries文档的集合

每个文档包含特定时间序列的一部分(每个文档中特定股票的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中,在相同的db上运行相同的代码,则需要10秒(!!!)。问题不在于使用工作正常的
find()
选择数据,而是查询所有数据

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


我没有在网上发现类似的烧瓶特定问题。有什么线索吗?

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

我没有依赖于,而是像您通常使用的那样在flask应用程序中使用了plain,它工作得非常快:

快速-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  
#以经典的方式使用pymongo
Mongodab_uri='mongodb://:@dsxxxxxx.mongodab.com:55802/'
connection=pymongo.MongoClient(主机=mongolab\u uri)
db=连接[“”]
coll=分贝。
#从这里查询并执行您需要的任何操作
慢速-长颈瓶Pymongo版本

from flask.ext.pymongo import PyMongo
app.config['MONGO_URI'] = 'mongodb:...'
mongo = PyMongo(app)
coll = mongo.db.<collection_name>
从flask.ext.pymongo导入pymongo
app.config['MONGO_URI']='mongodb:…'
mongo=PyMongo(应用程序)
coll=mongo.db。

是否指定主机名?还是IP地址?在应用程序的开头,我指定了
app.config['MONGO_URI']=“mongodb://:@dsxxxxxx.mongolab.com:55802/”
这可能是DNS查找问题。尝试连接到IP而不是主机名,例如
50.19.86.168
而不是
dsxxxxxx.mongolab.com
。解析IP可能需要很长时间。谢谢,很有趣。下面是我解决问题的方法,Pimongo中的问题会被联系起来吗?奇怪。尝试使用固定IP的慢速代码,看看是否有帮助。你是否理解为什么会发生这种情况?不完全理解,我用pymongo重新验证了概念,效果很好