[Python-es] matar ejecucion de funciones y metodos si se da un timeout, compatible con python2.4 y que valga para threads
Jose Caballero
jcaballero.hep en gmail.com
Mar Nov 8 23:17:41 CET 2011
Hola,
pregunta algo complicada de expresar, pero mas o menos el 'subject' lo dice
todo.
Estoy buscando una forma de poder matar la ejecucion de funciones y/o
metodos de clases cuando se produce un timeout.
He buscado algo en google, y hay algunas soluciones interesantes (como usar
signal), pero ninguna me llega a funcionar del todo.
Mis dos problemas fundamentales son:
- tiene que funcionar con python2.4 standard, sin librerias 3rd-party
- tiene que funcionar incluso cuando el metodo a matar pertenece a una
clase heredada de threading.Thread.
El segundo requisito imposibilita usar signal.
Me ha soltado un contundente:
ValueError: signal only works in main thread
He intentado tambien ejecutar la funcion/metodo en otro thread, y pasar el
valor del timeout a join().
Sin embargo eso no parece matar la ejecucion de codigo en cuestion.
Efectivamente, parece que se llama a join() antes de que la ejecucion
termine, pero esta sigue su camino en el background, no parece que join()
realmente la haya matado.
Alguien conoce una solucion para matar (de verdad) la ejecucion de
funciones y metodos, compatible con threads?
Muchas gracias por adelantado.
Jose
P.S. perdon por la falta de tildes.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20111108/b9815939/attachment.html>
Más información sobre la lista de distribución Python-es