Wenn Sie alle Befehle.
Angenommen, ich möchte alle 5 Sekunden eine Funktion aufrufen, um etwas auf einer externen API zu veröffentlichen.
Erstellen Sie in Ihrer Django-App einen Ordner/ein Paket mit dem Namen „Management“. Erstellen Sie in diesem Ordner einen weiteren Ordner mit dem Namen „Commands“. Erstellen Sie im Befehlsordner ein Modul mit dem Namen runposter.py. Am Ende haben Sie so etwas wie diese Struktur: yourapp/management/commands/runposter.py.
In diesem Code verwenden wir einen Thread, der eine While-Schleife ausführt, solange er nicht alle 5 Sekunden gestoppt wird. Ersetzen Sie print("posting") durch die Funktion/Logik, die Sie ausführen möchten.
# runposter.py import time from threading import Thread, Event from django.conf import settings from django.core.management.base import BaseCommand stop_event = Event() def my_job(): while not stop_event.is_set(): try: print("posting") time.sleep(5) except KeyboardInterrupt: break class Command(BaseCommand): help = "Run Poster." def handle(self, *args, **options): poster = Thread(target=my_job) try: print("Starting poster...") poster.start() while poster.is_alive(): poster.join(timeout=1) except KeyboardInterrupt: print("Stopping poster...") stop_event.set() poster.join() print("Poster shut down successfully!")
Gut, jetzt öffnen Sie ein weiteres Terminalfenster und führen python manage.py runposter aus. Wie Sie sehen können, wurde der Befehl runposter aus dem von uns angegebenen Modulnamen erstellt.
Für etwas Komplexeres empfehle ich natürlich die Verwendung von rq-scheduler oder Sellery Periodic Tasks oder Django-q.
Aber für einfache Fälle sollte das ausreichen.
Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen einfachen Scheduler in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!