Das ist ein typisches Rennen. Es prüft, ob der eingegebene Schlüssel existiert; Wenn dies nicht der Fall ist, wird eine Einfügung durchgeführt, aber jemand anderes kann den Schlüssel zwischen der Zählung und der Einfügung einfügen. Transaktionen verhindern dies nicht.
Der Code scheint dies zu erwarten und zu versuchen, damit umzugehen, aber als ich mir den Code ansah, um diesen Fall zu behandeln, konnte ich sofort sehen, dass er kaputt war. Hier gemeldet:http://code.djangoproject.com/ticket/11569
Ich würde dringend empfehlen, beim Memcache-Backend zu bleiben.