Lorsque quelqu'un s'inscrit à mon site Web, il doit s'inscrire avec un nom d'utilisateur unique. Mon pseudo-code actuel pour cela est:Comment puis-je implémenter une vérification de la disponibilité du nom d'utilisateur sur le moteur de l'application google?
if(datastore.nameIsAvailable(name)){
datastore.createUser(name);
}
Comment puis-je faire en sorte que entre le moment où nameIsAvailable
renvoie true, et la createUser
est terminée, une autre instance de mon application ne crée pas un utilisateur avec le même nom ?
mais ce qui empêche le problème de la concurrence de 2 cas en cours d'exécution du code en même temps , et les deux instances voient le nom comme disponible car la validation de la banque de données ne s'est pas produite avant les deux instances appelées "AppUser.get_by_key (name)"? – Kyle
Si vous souhaitez vérifier la disponibilité et prendre le nom s'il est disponible, vous pouvez exécuter les deux requêtes dans une transaction. C'est ce que fait get_or_insert (name): http://www.google.com/codesearch/p?hl=fr#Qx8E-7HUBTk/trunk/google/appengine/ext/db/__init__.py&q=get_or_insert%20package:http: //googleappengine%5C.googlecode%5C.com&sa=N&cd=1&ct=rc&l=870 –
Je pense que vous devriez mentionner que les deux premières options ne sont pas sûres. La question concerne spécifiquement la concurence. –