我有一个游戏系统的用户模型.需要每小时增加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)
你们有什么感想?
但话又说回来,为什么我不采取用户上次登录的时间差,如果是N个小时,我会奖励用户N*100分?这应该减少我的应用程序的负载.
是的,这是一种更有效的方法.这样,您每次登录时只更新一次积分,而不是每小时更新一次用户记录,这将非常昂贵.
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |