Мой User
объект, который я хочу создать и сохранить в хранилище данных, имеет email
и username
. Как убедиться, что при создании моего объекта User
, что другой объект User
также не имеет ни того же самого email
, ни того же самого username
?
Если я просто сделаю запрос, чтобы посмотреть, не использовали ли другие пользователи имя пользователя или адрес электронной почты, тогда может возникнуть условие гонки.
UPDATE:
Решение, которое я сейчас рассматриваю, заключается в использовании MemCache для реализации механизма блокировки. Я бы получил 2 блокировки, прежде чем пытаться сохранить объект User
в хранилище данных. Сначала блокировка, основанная на email
, затем другая блокировка, основанная на username
.
Поскольку создание новых User
объектов происходит только во время регистрации пользователя, и еще реже, когда два человека пытаются использовать либо одно и то же имя пользователя или одно и то же электронное письмо, я думаю, что это нормально, чтобы снизить производительность блокировки.
Я подумываю использовать код блокировки MemCache, который здесь: http://appengine -cookbook.appspot.com / recipe / mutex-using-memcache-api /
Что вы, ребята, думаете?