0

Я столкнулся с странным случаем в среде разработки App Engine.ndb query возвращает старое значение свойства

Существо, которое было обновлено должным образом. Я смог увидеть обновленное значение в средстве просмотра хранилища данных. Был также запрос, который получил тот же объект в запросе. В результате появилась сущность, но она имела старое значение свойства. Я смог исправить проблему, очистив memcache. Запрос выполнялся непосредственно в хранилище данных, а не возвращался из memcache. Курсор инициализируется значением None

announcements, cursor, more = query.fetch_page(
    msg.valid_data.get('limit') or 40, start_cursor=cursor) 

Есть ли случаи, когда прямой запрос может возвращать результаты из memcache? Нет ничего об этом в ndb caching documentation

Не может быть связано с курсорами?

ответ

4

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

См. Документацию по адресу structuring data for strong consistency.

+0

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

+0

Нет, совсем нет. Если вы внесете изменения в существующий объект, выполните запрос, вполне возможно вернуть прежнюю версию этого объекта. –

+0

Спасибо. теперь я понимаю –

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