C'est une course typique. Il vérifie si la clé que vous avez insérée existe ; si ce n'est pas le cas, il fait une insertion, mais quelqu'un d'autre peut insérer la clé entre le compte et l'insertion. Les transactions n'empêchent pas cela.
Le code semble s'attendre à cela et essayer de le gérer, mais lorsque j'ai regardé le code pour gérer ce cas, j'ai pu voir immédiatement qu'il était cassé. Rapporté ici :http://code.djangoproject.com/ticket/11569
Je vous recommande fortement de vous en tenir au backend Memcache.