Atominkrement eines Zählers im Django

Ich versuche, atomar Inkrement ist ein einfacher counter in Django. Mein code sieht wie folgt aus:

from models import Counter
from django.db import transaction

@transaction.commit_on_success
def increment_counter(name):
    counter = Counter.objects.get_or_create(name = name)[0]
    counter.count += 1
    counter.save()

Wenn ich verstehe, Django korrekt, diese sollten wickeln Sie die Funktion in eine Transaktion und machen die Schrittweite atomic. Aber es funktioniert nicht und es ist eine race-condition in der counter-update. Wie kann dieser code aus thread-sicher?

InformationsquelleAutor der Frage Björn Lindqvist | 2009-10-21

Schreibe einen Kommentar