Foros del Web » Programando para Internet » Python »

Timer task o scheduled jobs en python? Programar tareas a una determinada hora

Estas en el tema de Timer task o scheduled jobs en python? Programar tareas a una determinada hora en el foro de Python en Foros del Web. Buenas, Os comento el siguiente problema. Tengo un log (con logging) del programa con el siguiente formato de nombre "logYYYYMMDD.txt", hasta ahí todo correcto. El ...
  #1 (permalink)  
Antiguo 30/05/2011, 03:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 9 meses
Puntos: 1
Pregunta Timer task o scheduled jobs en python? Programar tareas a una determinada hora

Buenas,

Os comento el siguiente problema. Tengo un log (con logging) del programa con el siguiente formato de nombre "logYYYYMMDD.txt", hasta ahí todo correcto.

El problema es que quiero que cada dia a las 00:00:00 se cree un nuevo log para ese dia, el código para crear el nuevo log y demás está hecho lo que no sé es como se hace para que se ejecute a esa hora diariamente.

En java usaba timertask pero en python no sé como hacerlo, he visto la clase sched pero creo que no sirve para lo que busco.

Espero puedan ayudarme.

Un saludo y gracias por anticipado
  #2 (permalink)  
Antiguo 30/05/2011, 07:13
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Timer task o scheduled jobs en python? Programar tareas a una determinada

Ok puedes hacer un script en python que haga esto pero estas reinventando la rueda.

Si estas en linux o unix usa cron.
Si estas en windows has una tarea programada.
  #3 (permalink)  
Antiguo 30/05/2011, 07:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Timer task o scheduled jobs en python? Programar tareas a una determinada

Hola,

Gracias por la respuesta pero eso no me sirve ya que en realidad no quiero ejecutar un script cada X tiempo, sino que un script python que está en ejecución, me realice una acción o método cada X tiempo, en concreto a las 00:00:00 de cada dia.

Imagina por ejemplo que quiero sumar un contados cada X segundos, entonces simplemente haría un bucle while con un sleep de X segundos y luego que sume. Pues en este caso igual sólo que en vez de cada X segundos, poder hacerlo a una hora en concreto.
  #4 (permalink)  
Antiguo 30/05/2011, 08:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Timer task o scheduled jobs en python? Programar tareas a una determinada

Si es para rotar un log, si existe el módulo logging que se encarga de hacerlo.
En java también existe, por lo que me extraña tu pregunta. Si no te sirve logging, por favor dinos por qué.

En cualquier caso, si tu único uso para esta funcionalidad es rotar el archivo de log, por favor dinos cómo estás implementando el log, estoy seguro de que existe una forma de lograr lo que querés que no requiere una tarea programada, pero depende de tu implementación.

Saludos.
  #5 (permalink)  
Antiguo 30/05/2011, 09:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Timer task o scheduled jobs en python? Programar tareas a una determinada

Buenas AlvaroG,

Soy nuevo en python y aún no conozco el potencial del módulo logging, que efectivamente es el que estoy usando. ¿Cómo se hace que el módulo logging te rote el log?

Te comento como lo tengo:

Código Python:
Ver original
  1. def setLogger(self, fileName, verbosity=3):
  2.         if verbosity == 0:        
  3.             logLevel = logging.CRITICAL
  4.         elif verbosity == 1:
  5.             logLevel = logging.ERROR
  6.         elif verbosity == 2:
  7.             logLevel = logging.WARNING        
  8.         elif verbosity == 3:
  9.             logLevel = logging.INFO        
  10.         elif verbosity == 4:
  11.             logLevel = logging.DEBUG
  12.  
  13.         date = datetime.date.today().strftime("%Y%m%d")            
  14.         fileName =  fileName + "." + date + ".txt"
  15.         # print("FileName: %s" % fileName)    
  16.         logging.basicConfig(format='%(levelname)s - %(asctime)s.%(msecs)3d : %(message)s',
  17.                                             datefmt='%d/%m/%Y %I:%M:%S',
  18.                                             level=logLevel,    
  19.                                             filename=fileName,
  20.                                             filemode='a')


Como puedes ver me llega una ruta absoluta de fichero, a la que manualmente le añado la YYYYMMDD fecha y la extensión ".txt"

Yo lo que busco hacer es que a las 00:00:00 del día siguiente, ese log se cierre y se cree otro con la fecha del dia siguiente para tener las trazas del sistema separadas por días.
  #6 (permalink)  
Antiguo 30/05/2011, 11:10
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Timer task o scheduled jobs en python? Programar tareas a una determinada

RotateFileHandler
  #7 (permalink)  
Antiguo 31/05/2011, 01:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 241
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Timer task o scheduled jobs en python? Programar tareas a una determinada

Muchas gracias! No había visto esa clase la verdad... Por lo que he visto seguro que me sirve ya que se le puede especificar la fecha como extensión e indicarle que lo haga a medianoche.

Etiquetas: jobs, tareas, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:00.