2016-05-25 8 views
2

Ich arbeite an einem Projekt, die in der Zukunft wird regelmäßig eine Art von asynchronen Task für jeden Benutzer ausgeführt werden. Jeder Benutzer kann Aufgaben konfigurieren (täglich, wöchentlich usw. zu einem bestimmten Zeitpunkt). Die Task verwendet auch einige Daten, die vom Benutzer gespeichert werden. Jetzt frage ich mich, welcher Ansatz besser sein sollte: Erlaube den Benutzern, eine eigene PeriodicTask zu erstellen (unter Verwendung eines eingeschränkten Endpunkts) oder erstelle eine einzelne PeriodicTask (zum Beispiel alle 5 Minuten), die über alle Benutzer iteriert und bestimmt, ob die Aufgabe sein soll Angemeldet oder nicht für den aktuellen Benutzer? Ich denke, ich werde AMPQ als Broker verwenden.Sellerie PeriodicTask pro Benutzer

+0

Mindestlaufzeit ist täglich? oder es geht unter das? Wenn täglich Minimum ist, können Sie eine einzelne Zeit festlegen, um die Aufgabe für alle Benutzer auszuführen? Wie wird die Aufgabe um 12:00 Uhr ausgeführt, unabhängig davon, wann der Benutzer sie erstellt hat (wenn die Aufgabe gemäß der eingestellten Benutzerzeit gültig ist)? –

+0

Ich habe Main Post um klarer zu werden - Benutzer wird auch in der Lage sein, Zeit zu setzen, zum Beispiel ein Benutzer möchte Task um 19:30 PM auslösen und ein anderes um 11:00 Uhr –

+1

Ich denke, es hängt davon ab, wie viel Verzögerung ist tolerierbar in der Taskausführung. Wenn 5 Minuten tolerierbar sind, können Sie mit Einzelaufgaben gehen. Wenn die Verzögerung in Ihrem Fall nicht geeignet ist, sollten Sie für jeden Benutzeransatz eine separate Aufgabe verwenden. –

Antwort

1

periodische Aufgaben Scheduler in Sellerie ist nicht entworfen, um Tausende von geplanten Aufgaben zu behandeln, so aus Leistungsperspektive, viel bessere Lösung ist eine Aufgabe, die im kleinsten Intervall ausgeführt wird (z. B. wenn Sie zulassen, Benutzer täglich, wöchentlich zu planen , monatlich - täglich laufende Aufgabe ist genug)

solcher Ansatz auch stabiler ist - jedes Mal, Fahrplanänderungen, die alle die termin~~POS=TRUNC

neu geladen werden und ist sicherer, da Sie aussetzen oder verwenden Sie keine interne Mechanismen zur Aufgabenausführung

Verwandte Themen