Предположим, что у нас есть такой тривиальный демон, написанный в python:
def mainloop():
while True:
# 1. do
# 2. some
# 3. important
# 4. job
# 5. sleep
mainloop()
и мы демоннируем его с помощью start-stop-daemon
, который по умолчанию отправляет SIGTERM
(TERM
) сигнал на --stop
.
Предположим, что текущий шаг выполнен #2
. И в этот самый момент мы отправляем сигнал TERM
.
Случается, что выполнение немедленно прекращается.
Я обнаружил, что могу обработать событие сигнала, используя signal.signal(signal.SIGTERM, handler)
, но дело в том, что оно все еще прерывает текущее выполнение и передает элемент управления handler
.
Итак, мой вопрос: возможно ли прерывать текущее выполнение, но обрабатывать сигнал TERM
в отдельном потоке (?), чтобы я смог установить shutdown_flag = True
, чтобы mainloop()
имел шанс прекратить изящество?