NDB Query не возвращает полный объект
Я делаю запрос NDB, который, кажется, выбирает только частичный объект. Для модели я отключил кеширование, если это так. Тем не менее, некоторые свойства возвращаются с None, когда я вижу их заполненными в Datastore Viewer.
Это с локальным сервером разработки (и развернутым), и запрос выполняется внутренним процессом.
Примечание: очистка memcache не помогла.
ПРИМЕЧАНИЕ. Если я заставлю сервер перезапуститься, он начнет сбрасывать правильные данные.
В принципе:
Backend начинает запрашивать экземпляры модели каждые X секунд
Интерфейс вызывает изменение экземпляра модели
Backend продолжает видеть исходную версию экземпляра до перезапуска
Базовый код довольно прост:
while 1:
time.sleep(2)
q = None
res = None
q = core.Agent.query()
res = q.fetch(10)
for a in res:
logging.error("%s" % a.to_dict())
Внешний интерфейс изменяет некоторые свойства (и он отображается в средстве просмотра), но внутренний интерфейс будет показывать только старые значения. Также кажется, что фильтр будет фильтровать на основе правильных значений, но fetch() возвращает старые данные.
1 ответ
Вам нужно очистить кэш контекста в верхней части цикла, например
while 1:
ndb.get_context().clear_cache()
<rest of your code>