2012-07-25 11 views
12

Específicamente, cómo¿Cómo configurar APScheduler en un proyecto de Django?

  • Configuración APScheduler en un proyecto Django
  • del inicio de funcionamiento
  • Escribir al ORM de Django
+0

¿Qué es lo que quieres lograr? ¿A qué te refieres con * Escribir a Django ORM *? – MattH

+0

podemos darle una respuesta tan clara como su pregunta: instale django, instale APScheduler. escribe tus puntos de vista use add_date_job para agregar un trabajo. y haz tus cosas donde quieras en este trabajo – ornoone

+0

Dado que APScheduler es compatible con SQLAlchemy y MongoDb como tiendas de trabajo, quiere usar Django ORM. Mi conjetura. – laffuste

Respuesta

12

Bueno, voy a tener una oportunidad. Suponiendo que ha instalado apscheduler (o ponerlo en su ruta de Python) La basic documentation for APS enumera el siguiente código para poner en marcha un trabajo:

from apscheduler.scheduler import Scheduler 

sched = Scheduler() 

@sched.interval_schedule(hours=3) 
def some_job(): 
    print "Decorated job" 

sched.configure(options_from_ini_file) 
sched.start() 

El problema que sospecha que su tener es cómo activar el inicio de la de Django. Tienes múltiples opciones, que consisten principalmente en "colocarlo en algún lugar donde se ejecutará". Por ejemplo, agréguela a la parte inferior de un archivo models.py, o en urls.py, y se procesará una vez en cada reinicio de Django, luego continuará ejecutándose en segundo plano. Los accesos a la base de datos se pueden realizar normalmente desde dentro de la función: solo importe sus modelos de la forma habitual para sus consultas.

Sin embargo, considere que si hace esto, tendrá que matar & reinicie su servidor cada vez que desee modificar la programación. También estoy seguro de cómo esto va a irles con múltiples hilos (va a tener> 1 temporizador?)

Realmente puede ser que desee considerar ir con algo así como Celery (a través de django-celery) que todo esto se pone, más una demonio de programación separado con un control más fino de la programación.

+4

Gracias, la puesta en marcha fue el punto más interesante para mí. Estaba mirando APScheduler porque el CrontabScheduler en Apio no admite resoluciones menores que minutos, y el IntervalScheduler no admite start_date como lo hace APScheduler. Esto significa que no es posible hacer cosas como "cada segundo lunes" y "lunes a las 20:14:50". Pero decidí seguir con Apio y usar un Programador personalizado. Prefiero tener un proceso separado, que se ejecuta fuera del proceso del servidor web. Mucho más fácil de controlar y depurar, IMO. – jeverling

+0

"Sin embargo, considere que si hace esto, tendrá que matar y reiniciar su servidor en cualquier momento que desee modificar la programación". En realidad, esto no necesariamente requerirá matar el servidor. Simplemente iniciar APscheduler no requiere que se agreguen trabajos. OP podría simplemente iniciar el planificador en algún lugar y luego tener el código en otro lugar para agregar y eliminar trabajos según sea necesario, en una vista para ciertos usuarios, por ejemplo. Si OP no quiere lidiar con los gastos generales de usar Apio y planea mantener las cosas simples, esta sigue siendo una opción. – skeletalbassman

Cuestiones relacionadas