GAE数据存储如何轮询新项目

bof*_*man 0 python google-app-engine polling google-cloud-datastore

我使用python,ndb和数据存储区.我的模型("事件")有一个属性:

created = ndb.DateTimeProperty(auto_now_add = True).

事件会不时被保存,有时会在一秒钟内保存.

我想"轮询新事件",而不是两次获得相同的事件,并且如果没有任何新事件则获得空结果.但是,再次轮询可能会给我带来新的事件.

我见过游标,但我不知道是否可以以某种方式使用它来轮询新事件,如果第一个查询到达终点?当我到达数据的(当前)末尾时,"next_cursor"为None.

保持最后一个"创建"的DateTime属性,并使用它来获得下一个批处理工作,但这只是使用秒的分辨率,所以排序可能搞砸了..

我必须在Event中为此创建自己的事务性递增计数器吗?

Bog*_*scu 7

是的,使用游标是一个有效的选择.即使这个链接来自Java文档,它也适用于python.第二段是你要找的:

游标的一个有趣应用是监视实体的看不见的变化.如果应用程序在每次实体更改时使用当前日期和时间设置时间戳属性,则应用程序可以使用按时间戳属性(按升序排序)的查询,并使用数据存储区光标检查实体何时移动到结果列表的末尾.如果更新了实体的时间戳,则使用游标的查询将返回更新的实体.如果自上次执行查询后未更新任何实体,则不返回任何结果,并且光标不会移动.