[Python-es] ejecutar una función cada cierto tiempo.

José María josemariaruiz en gmail.com
Lun Abr 26 19:17:13 CEST 2010


Probablemente necesitas un sistema de scheduling independiente de la tu 
aplicación, yo he probado Kronos:

http://www.razorvine.net/download/kronos.py

que básicamente es un componente de TurboGears que han extraido y 
aislado. Funciona muy bien.

Un saludo.

On 15/04/2010 17:57, Boris Perez Canedo wrote:
> Hola a todos.
>
> Necesito hacer un script que corra constantemente y cada cierto tiempo 
> ejecute una función:
>
> Se que podría utilizar al s.o. (programar una tarea) pero me interesa 
> hacerlo con python porque es parte de un sistema que estoy haciendo y 
> ha de funcionar en cualquier s.o.
>
> La idea que tengo es la siguiente:
>
> En un archivo de configuración tengo el día de la semana y la hora en 
> que ha de correrse la función, sería algo así:
>
> 0-08:00:00 ó 3600
>
> Con expresiones regulares separo el día de la semana (en este caso 0 
> es Lunes) y la hora (08:00:00). Podría solo aparecer un número, en 
> este caso significa que la función se correrá una vez que transcurra 
> ese tiempo en segundos.
>
> Para el segundo caso me resulta sencillo hacerlo y sería algo como esto:
>
> def funcion():
>    "hacer algo"
>
> def Para2doCaso(conf_file):
>       while True:
>                  dia, hora = obtener_config(conf_file)
>                  if hora == "":
>                            #estamos en el segundo caso (dia contiene 
> los segundos a esperar).
>                            funcion() # ejecuto mi funcion
>                            time.sleep(int(dia)) # espero
>                  else:
>                         # aqui viene la otra forma de configuracion y 
> mi duda.
>
> Pongo dentro del ciclo dia, hora = obtener_config(conf_file) porque 
> aunque es cierto que en el segundo caso puede llegar a ejecutarse la 
> función cada, por ejemplo, 1 segundo, no es lo común, lo normal es que 
> se ejecute de 30 o 40 minutos en adelante y necesito que sea revisada 
> la configuración ya que puede llegarse a cambiar en ese tiempo.
>
>
> Gracias por adelantado.
>
> Saludos,
> Boris.
>
>
>
>
> ------------------------------------------------------------------------
>
> La mejor vacuna contra el virus A(H1N1) es la higiene personal
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>    


-- 
José María Ruiz Aguilera
Simple Option S.L.U.

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100426/dc202abc/attachment.html>


Más información sobre la lista de distribución Python-es