2016-06-17 9 views
0

Ich habe derzeit ein beträchtliches Django-Projekt. In der Ansicht mache ich eine große Berechnung, die zwischen Ansichten geteilt wird, um bei späteren Anforderungen Zeit zu sparen. Um die Seite zu aktivieren, habe ich ein Python-Skript, das über manage.py eine Reihe von Skripten startet, um beispielsweise Symlinks zu erstellen, statische Dateien zu sammeln usw. Wenn jeder der Befehle ausgeführt wird, lädt er alle Apps im Projekt macht diese große Berechnung. Ich möchte das verhindern. Im Idealfall möchte ich, dass die Vorberechnung nur einmal stattfindet, wenn ich aktiviere. Ich glaube, ich muß entweder:Django Vorberechnung in Sicht

  1. Prevent manage.py aus tatsächlich die Ansicht geladen (nicht sicher, ob dies möglich ist)
  2. Träge die Berechnung initialisiert wird (nicht ideal, da die erste Person ein resouce zu beantragen nimmt mehr Minuten)

Was sind meine Optionen? Jede Hilfe wird geschätzt!

Antwort

0

können Sie AppConfig für diese, insbesondere AppConfig.ready()

dieses SO answer oder Dokumentation finden, wie dies zu tun.

Edit:

Eine Möglichkeit ist, ein Skript manuell von django Shell auszuführen. Sie können dies tun, indem Sie im Terminal python manage.py shell eingeben. Sie können dann Modelle, Ansichten und ähnliche Shells importieren und Ihr Skript oder Ihre Funktion ausführen.

Eine weitere Option besteht darin, die Berechnung an eine Ansicht zu binden, die für nichts anderes verwendet wird, und einen URL-Pfad hinzuzufügen, um diese Funktion auszuführen. Dann können Sie manuell zu dieser URL gehen und die Berechnung wird ausgeführt.

Wären diese Methoden geeignet?

+0

Das habe ich zuerst ausprobiert, aber jedes Mal, wenn ich manage.py ausführe, wird eine neue AppConfig erstellt, und AppConfig.ready() wird ausgeführt. – Championcake