[pyar] subprocess.Popen con timeout

Claudio Freire klaussfreire en gmail.com
Mie Mayo 9 02:01:15 ART 2012


2012/5/9 claudio canepa <ccanepacc en gmail.com>:
> Necesito ejecutar scripts python bajo control de otro script python,
> capturando stderr y stdout.
>
> La forma recomendada de hacer esto parece ser usar subprocess.Popen, pero
> los pythons actuales no soportan especificarle un timeout para que si la
> ejecucion no termina en timeout segundos el subproceso sea matado. (esto es
> algo que se va a agregar en python 3.3 [0])
>
> Encontre algunas recetas y comentarios, pero las recetas no corrian o
> fallaban en windows.

Mirá vos. Yo tuve una necesidad parecida una vez, y usé otra forma[0],
capaz no de lo más linda, pero sin threads.
Nunca la probé en windows, pero no veo por qué no funcionaría, pues
reimplementé communicate() usando timeouts en los select(), cosa que
windows debería soportar diría bien.

No mata realmente al subproceso (aunque al cerrar los pipes
eventualmente morirá), y es medio compliquetti ponerlo como una
subclase de lo que devuelve subprocess.Popen, para que sea
transparente, pero imagino que con ganas algo podría hacerse al
respecto.

[0] http://yans.pl.sophia.inria.fr/code/nepi/file/fadec33001c1/src/nepi/util/server.py#l1019



More information about the pyar mailing list