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>
Другие вопросы по тегам