Можно ли получить курсор для начала запроса, чтобы в будущем при выполнении запроса он мог использовать его как end_cursor? - PullRequest
2 голосов
/ 30 декабря 2011

Я пытаюсь отобразить страницу, которая начинается с первых n объектов данной модели и регулярно проверяет наличие новых элементов на странице.Подобно тому, как, скажем, твиттер отображает страницу твитов, а затем запрашивает «6 новых твитов», когда они доступны.

В настоящее время я делаю это с помощью:

query = Item.all()
query.order("-created")
query.fetch(100)
cursor = query.cursor()
timestamp = time.time()
# render a page storing cursor and timestamp so it can request for older items
# & regularly check for newer ones.

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

Мне было интересно, есть ли способ сделать это следующим образом (и будет ли это быстрее):

  • захватите курсор для начала, давайте назовем этот update_cursor
  • выборку данных и т. Д. Как и прежде.

Когда страница запрашивает обновления (иобеспечивает update_cursor) выполнить тот же запрос, но с query.with_cursor(end_cursor=update_cursor) и query.run() вместо fetch (), чтобы он захватывал все элементы до точки, с которой я начинал ранее.

Я пытался получить 0объекты и посмотрите на курсор, но это просто дает мне пустую строку.

Возможно ли это (и, если это так, значительно быстрее, чем метод отметки времени)?Любые предложения или советы?

1 Ответ

0 голосов
/ 23 января 2012

Если вместо элементов, находящихся в начале индекса, они находятся в конце курсора?Это может помочь вам быть в самой новой сущности вашей модели (единственное, что я не уверен, если вы получите правильный курсор после последнего элемента запроса).в следующий раз, когда вы загружаете обновления, просто запустите свой запрос с этого курсора и извлеките новейшие объекты.

Я не пробовал сам, но это могло бы сработать, попробуйте и дайте мне знать, как это происходит.

...