2017-08-03 2 views
0

Ich weiß, dass es Fragen über "wie man periodische Aufgabe in Django" wie this post. Aber ich frage mich, welche wäre die beste Option, eine der in diesem Beitrag genannten Optionen (Celerity oder Cron meist) oder die periodische Aufgabe aus dem Javascript/jQuery zu verwenden.Periodische Aufgabe Django: Celerity vs Javascript/jQuery

Was ich erreichen möchte, ist einfach eine Aufgabe jeden Tag zu einer bestimmten Zeit auszuführen. Um eine Funktion aus der "view.py" aufzurufen. Diese Funktion stellt eine Verbindung zu einer URL her, lädt eine Datei herunter und sucht in dieser Datei nach Informationen und speichert sie dann in der Datenbank. Danach aktualisieren Sie die Homepage mit den neuen Informationen.

Welches wären die Vor- und Nachteile?

+0

Sie müssen die Situation und genau angeben, wo Sie dies anwenden möchten. Beide Ansätze sind richtig für verschiedene Situationen –

+0

Oh ja Entschuldigung, ich bin gegangen editiere meine Frage –

+0

@ArpitSolanki Fertig, sorry wieder –

Antwort

0

Ich sehe nicht, wie clientseitige JavaScript keine Hilfe hier (sein könnte und wenn es läuft serverseitig warum überhaupt Javascript verwenden?)

Wenn Sie andere Anwendungen für Sellerie in Ihrem Projekt haben, dann macht die Verwendung geplanter Aufgaben Sinn, und das 'Pro' ist, dass es keine manuelle Crontab-Einrichtung erfordert bei der Bereitstellung.

Wenn nun nur dieser eine Vorgang ausgeführt werden soll, muss der gesamte Selleriestapel (Sellerie + Rabbitmq + Redis) im Vergleich zu einem normalen Cron-Job (oder für welchen Scheduler auch immer) nur Overkill sein dein System).

Wenn die auszuführende Aufgabe nicht mit dem HTTP-Anfrage/Antwort-Zyklus zusammenhängt, hat dies in Ihren Ansichten nichts zu tun. Standardmäßig django-admin startapp erstellt einen Paket-Stub mit views.py, models.py und urls.py Module, aber Sie können so viele beliebige beliebige Module hinzufügen, wie Sie möchten. Für Skripts, die von der Kommandozeile aus ausgeführt werden sollen (was bei Cronjobs der Fall ist), lautet die idiomatische Lösung, sie als custom management commands zu schreiben.

1

Das Ausführen einer periodischen Aufgabe von JavaScript ist sicherlich keine Option, da Ihre Frontend-Seite Ihre Aufrufe aufrufen und Task ausführen muss.

Mein Vorschlag würde sein, Celery für die Ausführung periodischer Aufgabe zu verwenden, da es einfach einzurichten ist und in Ihrem Fall wird es nur ein paar Zeilen Code zur Ausführung der Aufgabe benötigen.

Unten ist ein Beispiel dafür, wie eine periodische Aufgabe auszuführen:

from celery.task.schedules import crontab 
from celery.decorators import periodic_task 

@periodic_task(run_every=crontab(minute=0, hour=0) ) 
def every_monday_morning(): 
    print("Execute every day at midnight") 

Refs: docs

+0

Vielen Dank für Ihre frühe Antwort, ich bin abaout, um es zu testen. Aus dem unterschiedlichen Python-Skript in einem Django-Projekt (view.py, urls.py, models.py) denke ich, dass derjenige, in dem ich diesen Code hinzufügen muss, der "views.py" sein wird, aber ich bin mir nicht sicher . Wenn Sie das bitte bestätigen könnten. –

+0

Ich habe bemerkt, dass die "Refs", auf die Sie verweisen, eine alte Version ist, die aktualisierte wird die [folgende] sein (http://docs.selleryproject.org/en/latest/userguide/periodic-tasks.html) , Liege ich falsch? –

+0

Ihr Link ist richtig. Entschuldigung für den alten Link. Welchen Code Sie auch immer ausführen möchten, fügen Sie ihn einfach zu der oben genannten Funktion hinzu und starten Sie dann den Sellerie-Arbeiter. –

Verwandte Themen