Una forma simple, que no sea Celery, de abordar las cosas sería crear comandos django-admin personalizados para realizar sus tareas asincrónicas o programadas.
Luego, en Windows, usa el at
comando para programar estas tareas. En Linux, usa cron
.
También recomiendo encarecidamente deshacerse de Windows si puede para un entorno de desarrollo. Tu vida será mucho mejor en Linux o incluso en Mac OSX. Reutilice una máquina vieja o de repuesto con Ubuntu, por ejemplo, o ejecute Ubuntu en una VM en su caja de Windows.
Django Chronograph es una gran alternativa. Solo necesita configurar un cron y luego hacer todo en django admin. Puede programar tareas/comandos desde la administración de django.
Tuve el mismo problema y dejé de intentar resolverlo con apio (demasiado complicado) o cron (externo a la aplicación) y terminé encontrando Advanced Python Scheduler. Recién comencé a usarlo, pero parece razonablemente maduro y estable, tiene una documentación decente y aceptará varios formatos de programación (por ejemplo, estilo cron).
De la documentación, ejecutando una función en un intervalo específico.
from apscheduler.scheduler import Scheduler
sched = Scheduler()
sched.start()
def hello_world():
print "hello world"
sched.add_interval_job(hello_world,seconds=10)
Esto no bloquea, y ejecuto algo bastante idéntico simplemente importando el módulo desde mi urls.py
. Espero que esto ayude.
https://github.com/andybak/django-cron
Activado por una sola tarea cron pero toda la programación y configuración se realiza en Python.