Eine einfache, nicht Celery-artige Herangehensweise wäre, benutzerdefinierte django-admin-Befehle zu erstellen, um Ihre asynchronen oder geplanten Aufgaben auszuführen.
Dann verwenden Sie unter Windows den at
Befehl, um diese Aufgaben zu planen. Unter Linux verwenden Sie cron
.
Ich würde auch dringend empfehlen, Windows für eine Entwicklungsumgebung aufzugeben, wenn Sie können. Ihr Leben wird unter Linux oder sogar Mac OSX so viel besser sein. Verwenden Sie zum Beispiel einen Ersatz- oder alten Computer mit Ubuntu, oder führen Sie Ubuntu in einer VM auf Ihrer Windows-Box aus.
Django Chronograph ist eine großartige Alternative. Sie müssen nur einen Cron einrichten und dann alles in Django Admin erledigen. Sie können Aufgaben/Befehle von der Django-Verwaltung aus planen.
Ich hatte das gleiche Problem und hielt mich zurück, es mit Sellerie (zu kompliziert) oder Cron (außerhalb der Anwendung) zu lösen, und fand schließlich Advanced Python Scheduler. Ich habe gerade erst angefangen, es zu verwenden, aber es scheint einigermaßen ausgereift und stabil zu sein, hat eine anständige Dokumentation und akzeptiert eine Reihe von Planungsformaten (z. B. Cron-Stil).
Aus der Dokumentation, Ausführen einer Funktion in einem bestimmten Intervall.
from apscheduler.scheduler import Scheduler
sched = Scheduler()
sched.start()
def hello_world():
print "hello world"
sched.add_interval_job(hello_world,seconds=10)
Dies ist nicht blockierend, und ich führe etwas ziemlich Identisches aus, indem ich einfach das Modul von meinem urls.py
importiere . Hoffe das hilft.
https://github.com/andybak/django-cron
Wird durch eine einzelne Cron-Task ausgelöst, aber die gesamte Planung und Konfiguration erfolgt in Python.