0

Я использую python, ndb и хранилище данных. Моя модель («Событие») имеет свойство:GAE datastore как опросить новинки

created = ndb.DateTimeProperty (auto_now_add = True).

События сохраняются время от времени, иногда несколько в течение одной секунды.

Я хочу «опросить новые события», не получая одно и то же событие дважды, и получить пустой результат, если нет новых событий. Тем не менее, опрос снова может дать мне новые события.

Я видел Cursors, - но я не знаю, можно ли их каким-то образом опробовать новые события, после того, как они достигли конца, если первый запрос? «Next_cursor» - это None, когда я достиг (текущего) конца данных.

Keeping последний получил «создал» DateTime-собственность и использовать его для получения следующей партии работает, но это только с помощью разрешения секунд, поэтому порядок может получить облажался ..

Должен ли я создать мой собственный транзакционный, увеличивающий счетчик в событии для этого?

ответ

7

Да, использование курсоров является допустимым вариантом. Даже этот link из документации Java, он также подходит для python. Второй абзац - это то, что вы ищете:

Интересное приложение курсоров - отслеживать объекты для невидимых изменений. Если приложение устанавливает свойство timestamp с текущей датой и временем каждый раз, когда сущность изменяется, приложение может использовать запрос, отсортированный по свойству timestamp, по возрастанию, с помощью курсора Datastore для проверки, когда сущности перемещаются в конец списка результатов , Если временная метка объекта обновляется, запрос с помощью курсора возвращает обновленный объект. Если ни один объект не был обновлен с момента последнего запроса, результаты не возвращаются, и курсор не перемещается.

+0

Точно такой же документ доступен для Python, а также:. Https://cloud.google.com/appengine/ docs/python/datastore/queries # Python_Cursors_and_data_updates –

0

EDIT: Prospective search has been shut down on December 1, 2015

Вместо опроса альтернативный подход будет использовать предполагаемому Поиск

https://cloud.google.com/appengine/docs/python/prospectivesearch/

Из документов

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

+0

Перспективный поиск теперь устарел, и он будет удален 1 декабря 2015 года: https://cloud.google.com/appengine/docs/deprecations/prospective_search –