Begrenzung der Verwendung des Speichers in eine *Große* Django QuerySet

Ich habe eine Aufgabe, die ausgeführt werden muss, auf "die meisten" Objekte in meiner Datenbank einmal alle einige Zeit (einmal am Tag, einmal in der Woche, was auch immer). Im Grunde bedeutet dies, dass ich habe einige Abfragen, die wie folgt aussieht läuft in einem eigenen thread.

for model_instance in SomeModel.objects.all():
    do_something(model_instance)

(Beachten Sie, dass es tatsächlich ein filter() nicht alle (), aber none-the-less ich noch bis Ende der Auswahl eines sehr große set der Objekte).

Das problem das ich laufen in ist, dass nach der Ausführung für eine Weile den thread getötet von meinem hosting-provider, denn ich bin mit zu viel Speicher. Ich bin vorausgesetzt alle diese Speicher verwenden, geschieht, weil, obwohl die QuerySet Objekt zurückgegeben durch meine Abfrage hat zunächst einen sehr kleinen Speicher-footprint landet es wächst, wie die QuerySet Objekt-caches jeder model_instance wie ich Durchlaufen, Sie.

Meine Frage ist, "was ist der beste Weg zu Durchlaufen fast jede SomeModel in meiner Datenbank in einem Speicher effizient zu gestalten?" oder vielleicht ist meine Frage "wie kann ich " un-cache' Modell-Instanzen aus einem django queryset?"

EDIT: ich bin eigentlich mit dem Ergebnis der queryset zu bauen, eine Reihe von neuen Objekten. Als solcher habe ich nicht am Ende der Aktualisierung der abgefragt-für die Objekte überhaupt.

  • Du wirst einige Hinweise auf das, was du tust mit den queryset. Django hat Regeln, und eine Anzahl von Operationen erfordern das laden des gesamten QuerySet in den Speicher, wo andere Operationen lediglich Prozess die Zeilen ein-at-a-time. docs.djangoproject.com/en/1.2/topics/db/queries/.... Bitte geben Sie einige Hinweise auf, wie du mit Ihr QuerySet-Objekte.
  • Sorry, ich sollte angeben, dass ich die Informationen aus den QuerySet-Objekte um neue Objekte zu erstellen (eines anderen Typs). Also ich bin eigentlich nie aktualisieren der Objekte bin ich mit dem Abfragen.
InformationsquelleAutor Chris W. | 2011-01-31
Schreibe einen Kommentar