2015-09-07 3 views
1

У меня есть база данных 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, работающем на локальном, он принимает 10 секунд (!!!). Проблема заключается не в выборе данных с find(), который отлично работает, а скорее запрашивает все данные обратно.

Заметьте, что если я подключу локальное приложение для фляги к местному mongodb, он отлично работает.

Я не нашел подобную проблему, связанную с флягой, упомянутую онлайн. Любые подсказки?

+0

Укажите, пожалуйста, имя хоста? Или IP-адрес? – 101

+0

В начале приложения я указываю 'app.config ['MONGO_URI'] = 'mongodb: // : @ dsxxxxxx.mongolab.com: 55802/'' – Pythonic

+0

Это может быть проблема поиска DNS. Попробуйте подключиться к IP вместо имени хоста, например '50.19.86.168' вместо' dsxxxxxx.mongolab.com'. Разрешение IP может занять много времени. – 101

ответ

0

Я решил это в несколько наивно:

Вместо того, чтобы полагаться на Flask-PyMongo, я просто использовал обычный 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 

Slow - Колба-PyMongo версия

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

Вы когда-нибудь понимали, почему это произошло? –

+0

Не совсем, я переделал доказательство концепции с пимонго, и он отлично работал – Pythonic

Смежные вопросы