У меня есть модель пользователя для игровой системы. Необходимо увеличить очки на 100 каждый час.Google App Engine Cron Job Question - Массовое обновление
# the key_name is the userid in this case
class User(db.Model):
points = db.IntegerProperty(default=0)
поэтому должен подготовить обработчик, который выполняет запрос GQL для всех объектов? (Это не было бы немного медленно с 500k - 1 млн объектов пользователем?)
например:
users = User.all() # if i'm not mistaken, only 1000 queries can be done.
for user in users:
user.points += 100
db.put(user)
я полагаю, с помощью очередей задач, а также счетчик шардинга преодолеть 1000 limiy, я мог бы вытащить
но с другой стороны, почему бы мне просто не учитывать разницу во времени, когда пользователь вступил в систему, а если это N часов, я буду награждать пользователя N * 100 баллов? что должно уменьшить нагрузку на мое приложение.
например: класс пользователя (db.Model): lastlogin = db.DateTimeProperty() точки = db.IntegerProperty (по умолчанию = 0)
что вы думаете, ребята?