Capturar señales en Python
A continuación dejo un pequeño ejemplo de como se pueden capturar señales con Python:
import signal
import time
import sys
def signal_handler(sig, func=None):
print 'SignalHandler. Saliendo...'
sys.exit(0)
if __name__=='__main__':
signal.signal(signal.SIGTERM, signal_handler)
print 'Esperando 15 segundos...'
time.sleep(15)
print 'Finalizado'
La idea es muy simple, el programa espera 15 segundos y finaliza. Si se envía la señal SIGTERM (señal 15) el proceso terminará sin esperar. Veamos como se ejecuta de forma normal:
$ python test.py
Esperando 15 segundos...
Finalizado
Y aquí podemos ver cómo se capturan las señales y se finaliza antes el proceso:
$ python test.py &
[1] 8172
Esperando 15 segundos...
$ kill -15 8172
SignalHandler. Saliendo...
[1]+ Hecho python test.py
$
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
