Une façon simple et non Celery d'aborder les choses serait de créer des commandes django-admin personnalisées pour effectuer vos tâches asynchrones ou planifiées.
Ensuite, sous Windows, vous utilisez le at
commande pour planifier ces tâches. Sous Linux, vous utilisez cron
.
Je recommanderais également fortement d'abandonner Windows si vous le pouvez pour un environnement de développement. Votre vie sera tellement meilleure sous Linux ou même Mac OSX. Réutilisez une machine de rechange ou ancienne avec Ubuntu par exemple, ou exécutez Ubuntu dans une machine virtuelle sur votre machine Windows.
Django Chronograph est une excellente alternative. Vous n'avez qu'à configurer un cron puis tout faire dans django admin. Vous pouvez programmer des tâches/commandes depuis la gestion Django.
J'ai eu le même problème et j'ai attendu de le résoudre avec du céleri (trop compliqué) ou cron (externe à l'application) et j'ai fini par trouver Advanced Python Scheduler. Je viens juste de commencer à l'utiliser, mais il semble raisonnablement mature et stable, dispose d'une documentation décente et prendra un certain nombre de formats de planification (par exemple, le style cron).
À partir de la documentation, exécuter une fonction à un intervalle spécifique.
from apscheduler.scheduler import Scheduler
sched = Scheduler()
sched.start()
def hello_world():
print "hello world"
sched.add_interval_job(hello_world,seconds=10)
Ceci n'est pas bloquant, et j'exécute quelque chose d'assez identique en important simplement le module depuis mon urls.py
. J'espère que cela vous aidera.
https://github.com/andybak/django-cron
Déclenché par une seule tâche cron, mais toute la planification et la configuration sont effectuées en Python.