Django-bezogene Objekte fehlen in der Sellerie-Aufgabe (Race Condition?)

Seltsames Verhalten, das ich nicht erklären kann. Ich habe ein Modell,Track, mit einigen verwandtenpoints. Ich rufe eine Sellerie-Task auf, um einige Berechnungen mit Punkten durchzuführen, und sie scheinen in der Methode selbst perfekt erreichbar, in der Sellerie-Task jedoch nicht verfügbar zu sein.

@shared_task
def my_task(track):
    print 'in the task', track.id, track.points.all().count()

def some_method():
    t = Track()
    t.save()
    t = fill_with_points(t)  # creating points, attaching them to a Track
    t.save()
    print 'before the task', track.id, track.points.all().count()
    my_task.delay(t)

Damit wird Folgendes gedruckt:

before the task, 21346, 2971
in the task, 21346, 0

Seltsame Sache, wenn ich eine time.sleep (10) in die erste Zeile von @ setmy_task oder bevor Sie @ anrufmy_task Überhaupt funktioniert es gut, als gäbe es einige Rennbedingungen. Aber die erste gedruckte Zeile sagt deutlich, dasspoints sind in der Datenbank verfügbar, wenn eine Auswahlabfrage durchgeführt wird track.points.all().count()).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage