Есть ли способ выполнить некоторые операции перед выходом из сельдерея при обнаружении прерывания клавиатуры (скажем, SIGINT)? Я пытался использовать модуль сигналов в своих задачах так:
signal.signal(signal.SIGINT, keyboard_interrupt_handler)
Но он не работает так, как я ожидаю. keyboard_interrupt_handler
действительно выполняется, но поскольку выполнение занимает несколько секунд, процесс завершается, прежде чем он может завершить выполнение sh.
Я также попытался временно заблокировать сигнал SIGINT
с помощью signal.pthread_sigmask
и запускает обработчик в потоке (поскольку их нельзя убить?), Но он сталкивается с той же проблемой.
Есть ли способ достичь чего-то подобного?