Google App Engine Cron工作问题 - 批量更新

foo*_*yee 0 google-app-engine

我有一个游戏系统的用户模型.需要每小时增加100点.

# the key_name is the userid in this case
class User(db.Model):
  points = db.IntegerProperty(default=0)
Run Code Online (Sandbox Code Playgroud)

那么应该准备一个跨所有实体进行GQL查询的处理程序吗?(500k - 100万用户实体会不会有点慢?)

例如:

users = User.all() # if i'm not mistaken, only 1000 queries can be done.
for user in users:
  user.points += 100
  db.put(user)
Run Code Online (Sandbox Code Playgroud)

我想使用任务队列,并使用分片计数器来克服1000分,我可以将其拉下来

但话又说回来,为什么我不采取用户上次登录的时间差,如果是N个小时,我会奖励用户N*100分?这应该减少我的应用程序的负载.

例如:class User(db.Model):lastlogin = db.DateTimeProperty()points = db.IntegerProperty(default = 0)

你们有什么感想?

gav*_*inb 5

但话又说回来,为什么我不采取用户上次登录的时间差,如果是N个小时,我会奖励用户N*100分?这应该减少我的应用程序的负载.

是的,这是一种更有效的方法.这样,您每次登录时只更新一次积分,而不是每小时更新一次用户记录,这将非常昂贵.