Tengo una tarea programada en una máquina WinXP SP2 que está configurada para ejecutar un script de Python:

Diaria

Hora de inicio: 12:03 a.m.

Programe tareas diariamente: cada 1 día

Fecha de inicio: alguna vez en el pasado

Repetir tarea: cada 5 minutos

Hasta : duración 24 horas

Básicamente, quiero que el script se ejecute cada cinco minutos, para siempre.
Mi problema es que la tarea se ejecuta en algún momento después de las 23:47 cada noche (presumiblemente después de las 23:55) y no se ejecuta después de eso. ¿Qué estoy haciendo mal? Alternativamente, ¿hay algún método diferente que pueda sugerir además de usar las tareas programadas de Windows?

1
avguchenko 19 oct. 2009 a las 23:03

7 respuestas

La mejor respuesta

Puede programarlo desde otro script y comenzar esto una vez al día o después de cada reinicio:

#!/usr/bin/env python

import subprocess

interval = 300  # secs

while True:
    p = subprocess.Popen(['pythonw.exe', 'foo.py'])
    time.sleep(interval)

De esta manera también puedes hacer intervalos de subminutos.

3
Corey Goldberg 19 oct. 2009 a las 19:15

¿Qué versión de Windows tienes?

¿Revisó la pestaña "Configuración" para asegurarse de que todas las opciones estén desactivadas?

También puede considerar un programador más rico en funciones, como Programador del sistema del software Splinterware

0
meme 19 oct. 2009 a las 19:22

A riesgo de no responder a su pregunta, ¿puedo sugerirle que si lo que tiene que ejecutar es importante o incluso crítico, entonces el Programador de tareas de Windows no es la forma de ejecutarlo?

Hay tantos flujos terribles cuando se usa el programador de tareas. Comencemos con los obvios:

No hay registro. No hay forma de investigar qué sucede cuando las cosas salen mal. No hay forma de distribuir el trabajo entre las PC. No hay tolerancia a fallas. Es solo Windows y la interfaz es mala.

Si alguno de los anteriores es un problema para usted, necesita algo un poco más sofisticado. Mi sugerencia es que pruebe Hudson, también conocido como el servidor de integración continua de Sun.

Además de todo lo anterior, puede hacer una programación de estilo cron, con vencimiento automático de registros. Puede configurarse como jabber o correo electrónico en caso de falla e incluso puede hacer que diagnostique automáticamente lo que salió mal con su proceso si puede hacer que produzca algún resultado XML.

Por favor, no use las tareas programadas de Windows. Hay muchas cosas mejores para usar, y hablo por experiencia cuando digo que nunca me arrepiento de haber descartado el programador incorporado.

1
Salim Fadhley 19 oct. 2009 a las 21:09

Hasta: Duración 24 horas.

Eso lo apaga al final del primer día.

Elimina eso, mira si continúa. Debería, y no debería necesitar instalar Python en el proceso. :)

1
Dean J 19 oct. 2009 a las 20:19

Por lo que sé, las tareas programadas son horribles. Deberías usar algo con mejor control como

http://cronw.sourceforge.net/ o cualquier otra implementación de cron para Windows.

1
CraniumRat 19 oct. 2009 a las 20:16

Además, durante el último año más o menos he visto un error común en el que las tareas programadas en Server 2003 o XP no se ejecutan si alguna de las siguientes casillas de verificación está activada:

  • "No comience la tarea si la computadora funciona con baterías"
  • "Detenga la tarea si comienza el modo de batería"

Parece que Windows se confunde un poco si tiene una batería (en una computadora portátil) o un UPS (en un servidor, por ejemplo), independientemente de si la alimentación de la red eléctrica funciona o no.

Además, por regla general, reduciría el tiempo o desmarcaría la opción "Detener la tarea si se ejecuta durante X minutos" cuando la ejecute con tanta frecuencia.

1
ewall 19 oct. 2009 a las 19:17

En el primer panel (con la etiqueta "Tarea"), ¿tiene "Ejecutar solo si ha iniciado sesión" sin marcar y "Activado (la tarea programada se ejecuta a la hora especificada)"?

Ejecuté trabajos de Python a través de tareas programadas de Windows con configuraciones muy similares a las que muestra.

1
Doug Harris 19 oct. 2009 a las 19:12