Vamos supor que temos um daemon tão trivial escrito em python:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
e nós o daemonizamos usando o start-stop-daemonqual, por padrão, envia sinal SIGTERM( TERM) --stop.
Vamos supor que a etapa atual executada seja #2. E neste exato momento estamos enviando TERMsinal.
O que acontece é que a execução termina imediatamente.
Descobri que posso lidar com o evento de sinal usando, signal.signal(signal.SIGTERM, handler)mas o fato é que ele ainda interrompe a execução atual e passa o controle para handler.
Então, minha pergunta é - é possível não interromper a execução atual, mas manipular o TERMsinal em um thread separado (?) Para que eu pudesse configurar shutdown_flag = Truepara que mainloop()tivesse a chance de parar normalmente?
signalfde mascarando a entrega doSIGTERMprocesso.