2015-02-26 6 views
0

У меня есть БД, поддерживающая список вызовов. Каждую неделю мне приходится импортировать файл excel или json-объект, чтобы убедиться, что список данных вызовов синхронизирован с другим db, который имеет другой формат (мне нужно сделать некоторые интерпретации данных, которые я получаю из xls)Операции записи хранилища данных GAE dalay

Во всяком случае, я создал функцию, которая выполняет весь импорт, но я заметил, что каждый раз, когда я запускаю ее, я получаю разные результаты.

После некоторого расследования, что я замечаю, что если я много выполняю put(), то между окончанием put и задержкой есть данные в хранилище данных, поэтому запросы иногда возвращают разные значения.

Я установил, что добавление задержки

time.sleep(1) 

Но я думаю, что должно быть способом просто подождать, пока хранилищу не стабилен, а не фиксированное количество времени. Я пытался найти его, но не повезло.

Любая помощь?

+0

, пожалуйста, покажите свой код –

ответ

2

Это часто повторяющийся вопрос - хотя другой вопрос вначале может показаться не таким.

Если вы используете хранилищу вы должны прочитать на «Eventual последовательности»

https://cloud.google.com/developers/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/

По моему мнению, документы для AppEngine и датасторе, вероятно, следует вести с с «Если вы не читали о возможной последовательности, сделайте это сейчас! " в действительно большом типе ;-)

+0

... и, tl; dr, используйте операцию синхронизации, такую ​​как 'get' на ключе, чтобы заставить сильную консистенцию, после того как вы закончите w/все ваши 'put' и перед тем, как вы запросите назад, чтобы проверить. Также рассмотрите (для скорости) multi_put_async и ожидайте на всех фьючерсах перед упомянутым синхронизацией. –

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