Un modo semplice e non di Celery per affrontare le cose sarebbe creare comandi django-admin personalizzati per eseguire le tue attività asincrone o pianificate.
Poi, su Windows, usi at
comando per pianificare queste attività. Su Linux, usi cron
.
Consiglio vivamente anche di abbandonare Windows, se possibile, per un ambiente di sviluppo. La tua vita sarà molto migliore su Linux o anche su Mac OSX. Ad esempio, riutilizza una macchina di riserva o vecchia con Ubuntu o esegui Ubuntu in una VM sulla tua macchina Windows.
Django Chronograph è un'ottima alternativa. Devi solo configurare un cron, quindi fare tutto in django admin. Puoi programmare attività/comandi dalla gestione di Django.
Ho avuto lo stesso problema e ho trattenuto il tentativo di risolverlo con celery (troppo complicato) o cron (esterno all'applicazione) e ho finito per trovare Advanced Python Scheduler. Ha appena iniziato a usarlo, ma sembra ragionevolmente maturo e stabile, ha una documentazione decente e richiederà una serie di formati di pianificazione (ad es. stile cron).
Dalla documentazione, esecuzione di una funzione a un intervallo specifico.
from apscheduler.scheduler import Scheduler
sched = Scheduler()
sched.start()
def hello_world():
print "hello world"
sched.add_interval_job(hello_world,seconds=10)
Questo non è bloccante e eseguo qualcosa di abbastanza identico semplicemente importando il modulo dal mio urls.py
. Spero che questo aiuti.
https://github.com/andybak/django-cron
Attivato da una singola attività cron, ma tutta la programmazione e la configurazione vengono eseguite in Python.