Вот ситуация у меня есть модель, какКак обновить данные об объекте Google App Engine ОПРС, так что он отлично работает для нескольких записи одновременно
class Content(ndb.Model):
likeCount=ndb.IntegerProperty(default=0)
likeUser = ndb.KeyProperty(kind=User, repeated=True)
Когда новый контент генерируют чем новый «Содержимое» объект создается как
content_obj_key = Content(parent=objContentData.key, #Where ContentData is another ndb.Model subclass
likeUser=[],
likeCount=0
).put()
И когда любой пользователь, как же содержание, чем ниже функция вызывается
def modify_like(contentData_key, user_key):
like_obj = Content.query(parent=contetData_key).get()
if like_obj:
like_obj.likeUser.append(user_key)
like_obj.likeCount += 1
like_obj.put()
Проблема:
Теперь проблема заключается в том, что при одновременном использовании более 4 пользователей, таких же, как этот объект, записывают неправильные данные.
Я имею в виду, скажем, userA, userB, userC и userD как эти данные одновременно, и в настоящее время только пользователю нравится тот же контент.
Итак, все новые четыре записи «likeCount» не 5, всегда меньше 5, а длина списка «likeUser» также меньше 5.
Итак, как я могу решить эту проблему? Так что всегда данные остаются согласованными.
Если я удаляю «родительское» ограничение, в котором указано, что «всего 1 запись/сек», чем та же проблема. – AnkurJat
читал о возможной согласованности. есть много других s.o. вопросы и статьи, касающиеся этого. –
Необходимо учитывать не только постоянную согласованность, но также я не вижу никаких доказательств использования транзакций, поэтому ожидаются результаты перезаписи. Обновления в очереди и пакетные обновления также могут быть рассмотрены, если вам не нужна точность в реальном времени, но вы хотите получить точные результаты. –