Supongamos que tenemos un demonio tan trivial escrito en python:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
y lo damonizamos usando start-stop-daemonque por defecto envía señal SIGTERM( TERM) --stop.
Supongamos que el paso actual realizado es #2. Y en este mismo momento estamos enviando TERMseñal.
Lo que sucede es que la ejecución termina de inmediato.
Descubrí que puedo manejar el evento de señal usando, signal.signal(signal.SIGTERM, handler)pero la cuestión es que todavía interrumpe la ejecución actual y pasa el control a handler.
Entonces, mi pregunta es: ¿es posible no interrumpir la ejecución actual sino manejar la TERMseñal en un hilo separado (?) Para poder configurarlo shutdown_flag = Truey mainloop()tener la oportunidad de detenerlo con gracia?
signalfdy enmascarar la entrega delSIGTERMproceso.