我正在尝试呈现一个以给定模型的前 n 个实体开头的页面,并让该页面定期检查新项目。类似于 Twitter 呈现推文页面,然后在可用时提示您“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 个实体并查看光标,但这只是给了我一个空字符串。
这可能吗(如果可能的话,明显比时间戳方法快)?有什么建议或建议吗?
请您参考如下方法:
如果元素不是位于索引的开头,而是位于游标的末尾?这可以帮助您处于模型的最新实体(唯一我不确定您是否会在查询的最后一个元素之后获得有效游标)。接下来,当您拉取更新时,只需从该游标开始查询并获取最新的实体。
我自己没有尝试过,但它可以工作,试一试,让我知道结果如何。
