2011-06-08 13 views
9

Algo en lo que he tenido interés es ejecutar regularmente un cierto conjunto de acciones en intervalos de tiempo regulares. Obviamente, esta es una tarea para cron, ¿verdad?Programar un evento regular: alternativas de Cron/Cron (incluido Apio)

Lamentablemente, Internet parece estar un poco en desacuerdo allí.

Déjenme detallar un poco sobre mi configuración. Primero, mi entorno de desarrollo está en Windows, mientras que mi entorno de producción está alojado en Webfaction (Linux). No hay cron real en Windows, ¿verdad? Además, yo uso Django! ¿Y qué se sugiere para Django?

Celery por supuesto! Lamentablemente, la configuración de Apio ha sido más o menos una pesadilla literal para mí; consulte Error message 'No handlers could be found for logger “multiprocessing”' using Celery. Y este es solo UNO de los problemas que he tenido con Apio. Otros incluyen un error de socket que es el único que ha tenido el problema.

No me malinterpreten, el apio parece REALMENTE genial. Desafortunadamente, parece haber una falta de soporte, y algunas limitaciones extrañas incorporadas en su back-end preferido, RabbitMQ. Desafortunadamente, no importa cuán genial sea un programa, si no funciona, ¡bien, no funciona!

Ahí es donde espero que todos ustedes puedan entrar. Me gustaría saber acerca de cron o un cron-equivalente, que se puede configurar de manera similar (preferiblemente idéntica) en un entorno Windows y Linux.

(He estado luchando con apio durante aproximadamente dos semanas y por desgracia creo que es momento de tirar la toalla y renunciar a ella, al menos por ahora.)

+1

¿Por qué te gustaría desarrollar en Windows pero implementarlo en Linux? Parece que te estás preparando para muchos dolores de cabeza como estos. –

+0

No es del todo mi elección. He considerado cambiar una de mis computadoras o particionarla, pero en última instancia eso tiene su propia cuota de problemas equivalentes. Solo estoy buscando sacar lo mejor de la situación tal como está ahora. – RHH

+1

El instalador de Wubi hace que ahora sea más fácil para usted realizar el arranque dual en ubuntu. – goh

Respuesta

11

Un simple, no apio La forma de abordar las cosas sería crear Django custom management commands para realizar sus tareas asíncronas o programadas.

Luego, en Windows, usa el comando at para programar estas tareas. En Linux, usa cron.

También recomendaría abandonar Windows si puede para un entorno de desarrollo. Tu vida será mucho mejor en Linux o incluso en Mac OSX. Vuelva a utilizar una máquina sobrante o vieja con Ubuntu, por ejemplo, o ejecute Ubuntu en una VM en su caja de Windows.

14

Tuve el mismo problema, y ​​aguanté tratando de resolverlo con apio (demasiado complicado) o cron (externo a la aplicación) y terminé encontrando Advanced Python Scheduler. Recién comenzó a usarlo, pero parece razonablemente maduro y estable, tiene una documentación decente y tendrá varios formatos de programación (por ejemplo, estilo cron).

Desde documentation, 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 es no bloqueante, y ejecutar algo bastante idéntica simplemente importando el módulo de mi urls.py. Espero que esto ayude.

0

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.

Cuestiones relacionadas