Planen Sie Aufgaben mit Django-Sellerie basierend auf Benutzereingaben

8

Ich baue ein Reporting-Portal mit django. In diesem Portal muss ich Benutzern die Möglichkeit geben, Berichte so zu planen, dass sie wiederholt ausgeführt werden. Ich habe Django-Sellerie erforscht und verstehe, dass Sie den periodic_task-Dekorator verwenden können, um eine wiederkehrende Aufgabe zu planen, aber in allen Beispielen, die ich gesehen habe, ist die Cron-Zeitplan-Information fest in den Decorator kodiert.

%Vor%

Gibt es eine Möglichkeit, Django-Sellerie zu verwenden, um eine wiederkehrende Aufgabe basierend auf der Eingabe eines Benutzers dynamisch zu planen?

Beispielsweise verwendet ein Benutzer ein Formular, um den Bericht auszuwählen, den sie ausführen möchten, und stellt alle für den Bericht erforderlichen Parameter und den Zeitplan bereit, wenn der Bericht ausgeführt werden soll. Sobald ich das Formular bearbeitet habe, gibt es eine Methode oder Funktion, die ich aufrufen kann, um einen run_report-Task zu einem Zeitplan hinzuzufügen? Wenn ja, gibt es eine Möglichkeit, alle in der Datenbank gespeicherten aktuellen Zeitpläne abzurufen, damit sie angezeigt werden können?

    
user1042361 08.12.2011, 21:05
quelle

3 Antworten

1

Werfen Sie einen Blick auf djcellery in der Admin-Oberfläche: Ссылка

Versuchen Sie, ob Sie dort das erforderliche Task-Setup erstellen können (mit crontabs / intervals / periodical tasks) Wenn ja, besteht eine große Chance, dass Sie das schnell aufbauen können.

    
ohrstrom 14.02.2012 12:06
quelle
1

Ссылка

zB: -

%Vor%

.

%Vor%

wird in 10 Sekunden ausgeführt.

%Vor%

wird in 10 Sekunden ausgeführt und mit eta angegeben %Vor%

wird in einer Minute ausgeführt, läuft aber nach 2 Minuten ab.

    
Ryu_hayabusa 17.09.2014 12:40
quelle
0

Überschreiben Sie Ihre Speichermethode in Modellen. Wenn ein Benutzer einen Prozess / eine Aufgabe starten möchte, ändert er das Modell, das den Start der Aufgabe auslöst.

Ihre_App / models.py:

%Vor%

Ihre_App / tasks.py

%Vor%     
ChillarAnand 30.08.2014 07:17
quelle