[Python-es] Funcionan los scripts de Python con Tareas Programadas de Windows ?

Olemis Lang (Simelix) olemis+py en gmail.com
Vie Feb 5 15:13:34 CET 2010


2010/2/4 Olemis Lang (Simelix) <olemis+py en gmail.com>:
> 2010/2/4 Dr. Bobus <drbobus en gulic.org>:
>> El Thu, 4 Feb 2010 11:21:49 -0500
>> "Olemis Lang (Simelix)" <olemis+py en gmail.com> dijo:
>>
>>> Hola a todos !
>>>
>>> Esta vez estoy tratando de utilizar el Windows Task Scheduler (WTS)
>>> para ejecutar un script de Python . El momento exacto depende, por
>>> tanto, de todo el sin número de reglas y opciones y checkbox(es)
>>> mágicos q hay por esa zona ;o). Ahora el problema es otro . Antes que
>>> hay q decir q :
>>>
>>>   - El script funciona cuando lo ejecuto desde la línea de comandos
>>>      con los parámetros adecuados
>>>   - ... cuando digo «los parámetros adecuados» son los parámetros
>>>      a utilizar para hacer lo q se pretende y, además, q la línea de
>>>      comandos la copié desde el edit `` y la pegué para ejecutar
>>>      (i.e. no puede haber diferencias ;o)
>>>   - Durante su funcionamiento se utiliza `logging` para registrar eventos
>>>      hacia la consola (stderr AFAICR) y hacia el Windows Event Log (q se
>>>      pueden ver con el Viewer ;o)
>>>   - La ejecución del script demora normalmente unos minutos
>>>   - En especial hay un evento q registra el inicio y el final del servicio
>>>   - Cuando se ejecuta desde la consola se ven todos los eventos
>>>      (stderr + event viewer ;o) como debería ser.
>>>
>>> La cuestión es q cuando se activa la tarea y el WTS ejecuta el script
>>> entonces se visualiza una ventana del `cmd` en modo de consola, en la
>>> q se muestra un único mensaje q no tiene nada q ver con los emitidos
>>> por `logging` (algo así como `[DEFAULT]` ) y no se registra nada en el
>>> Event Viewer tampoco. Todo esto me hace pensar q, a pesar que el WTS
>>> lo ejecuta, por alguna razón mata el proceso inmediatamente y me
>>> enseña un cartelito para demostrarme q no sé programar en Python (q
>>> manía ! ... :o)
>>>
>>> Por eso les pregunto
>>>
>>> Q:
>>>   - Alguien sabe lo q pasa (o ha experimentado algo así antes)
>>>      y cómo resolverlo ?
>>>   - Será q el comando tiene q ser implementado como un
>>>      servicio de Windows ?
>>
>> No se si es lo mismo, pero te cuento, yo ejecuto un montón de tareas programadas mediante "las tareas programadas de windows" (windows 2000) y me han pasado varias cosas. No soy administrador del sistema y la configuración de los permisos en mi red varía según las necesidades de la empresa...
>> Mis principales problemas han venido siempre por ese lado, desde lo permisos para crear/modificar tareas programadas a los permisos de acceso, lectura y escritura en los distintos directorios que usen los script (incluyendo donde está el ejecutable de python). Fíjate también con que usuario está ejecutando tu script.
>>
>

Bueno he realizado varios descubrimientos importantes recientemente.
Primeramente ya detecté la causa del problema. El script debe
ejecutarse con un parámetro que indica el camino a un fichero de
configuración (q se guarda en la variable `src`). Es por esto que hago
lo siguiente para probar ;o).

{{{
#!python

from optparse import OptionParser
import sys

p = OptionParser()
p.add_option("-i", "--input", dest="src",
                  help="load config FILE", metavar="FILE")
opts, args = p.parse_args()

print sys.argv
print opts.src

raw_input("Accept ? (Y|y)")
}}}

Si ejecuto en la línea de comandos :

{{{
#!sh

$ X:\path\to\file.py -i X:\path\to\cfg.ini
}}}

Entonces recibo la siguiente salida

{{{
['X:\path\to\file.py', '-i', 'X:\path\to\cfg.ini']
X:\path\to\cfg.ini
}}}

... mientras que, al ejecutarlo a través del WTS, lo que recibo es

{{{
['X:\path\to\file.py']
None
}}}

No sé si esto sea debido a alguna deficiencia del intérprete o a otra
travesura de MS Windows. ¿Qué creen Uds? Por lo menos a priori, no me
parece que esté relacionado con algunas de las sugerencias anteriores.

Cualquier nueva idea o comentario será bienvenida. Gracias !

-- 
Regards,

Olemis.

Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/

Featured article:
Fixed a test error following a recent Trac 0.12dev workflow action
change, added a placeholde...  -
http://bitbucket.org/osimons/trac-rpc-mq/changeset/839be860b42c/



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