Я хочу реализовать правильную обработку SIGINT в своем сценарии, который открывает несколько файлов и соединение с базой данных. Они должны быть закрыты, если скрипт нажат CTRL+C или каким-либо другим образом прерван.
Раньше я использовал исключение KeyboardInterrupt
для перехвата CTRL+C, там я проверял, определены ли файлы/соединения, если да, закройте их, затем выйдите.
Это действительно питонический способ сделать это, или лучше использовать обработчики сигналов? например
import signal, sys, time
def handler(signum, frame):
print("..kthxbye")
sys.exit(1)
def main():
signal.signal(signal.SIGINT, handler)
i = 0
while True:
print(i)
i += 1
time.sleep(1)
if __name__ == "__main__":
main()
Мне это кажется более чистым, но я не знаю, как передать имена файлов или соединения с базой данных обработчику.