251 votos

¿Django - configura un trabajo programado?

He estado trabajando en una aplicación web utilizando Django, y tengo la curiosidad de si hay una manera de programar un trabajo para que se ejecute periódicamente.

Básicamente, sólo quiero correr a través de la base de datos y haga algunos cálculos y actualizaciones en forma automática, de manera regular, pero me parece que no puede encontrar ninguna documentación sobre esto.

¿Alguien sabe como configurar esto?

Para aclarar: yo sé que se puede establecer un cron trabajo para hacer esto, pero tengo curiosidad por ver si hay alguna característica en Django que proporciona esta funcionalidad. Me gustaría que la gente fuera capaz de implementar esta aplicación sí mismos sin tener que hacer mucho config (preferiblemente de cero).

He considerado la posibilidad de activación de estas acciones de forma "retroactiva" simplemente comprobando si un trabajo debe haber sido ejecutado desde la última vez que una solicitud fue enviada al sitio, pero yo estoy esperando algo un poco más limpio.

196voto

Brian Neal Puntos 13668

Una solución que he empleado es hacer esto:

1) Crear una administración personalizada de comandos, por ejemplo.

python manage.py my_cool_command

2) el Uso cron (en Linux) o at (en Windows) para ejecutar mi comando en los tiempos requeridos.

Esta es una solución sencilla que no requiere la instalación de un pesado AMQP de la pila. Sin embargo, hay buen ventajas para el uso de algo como el Apio, mencionado en las otras respuestas. En particular, con el Apio es bueno para no tener que difundir la lógica de su aplicación en el crontab de archivos. Sin embargo, el cron solución funciona muy bien para las pequeñas y medianas aplicación y donde no queremos que un montón de dependencias externas.

86voto

dln Puntos 651

El apio es una cola de tareas distribuidas, construida sobre AMQP (RabbitMQ). También maneja tareas periódicas en forma de cron. Dependiendo de su aplicación, valdría la pena un vistazo.

23voto

S.Lott Puntos 207588

Si estás usando un sistema operativo estándar, utilice cron.

Si estás usando Windows, utilice en.

Escriba un comando de administración de Django para

  1. Figura están en qué plataforma.

  2. O ejecutar el "En" el comando apropiado para sus usuarios, o actualizar el archivo crontab para sus usuarios.

19voto

Van Gale Puntos 21982

Interesante nueva pluggable Django app: django-Cronógrafo

Sólo tienes que añadir una entrada de cron que actúa como un temporizador, y tiene una interfaz muy atractiva de admin de Django en las secuencias de comandos para ejecutar.

11voto

user41767 Puntos 413

Mira Cron de Django pobre que es una aplicación Django que hace uso de spam bots, robots de indexación del motor de búsqueda e igualmente para ejecutar tareas programadas en intervalos regulares aproximadamente

Ver: http://code.google.com/p/django-poormanscron/

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X