TL;DR: Как правильно по-питонячьи реализовать аналог trap
или что-то, что будет делать тоже самое для запуска функции при завершении программы вне зависимости от результата, в т. ч. при ошибке?
Пишу программу, которая, конечно, может падать. Программа работает с файлами, в т. ч. принимает файлы на загрузку, их обрабатывает, сохраняет и прочее. Для программы предусмотрен lockfile, чтобы случайно не запустили второй+ раз, т. к. это приведен к неправильной обработке файлов. В случае ошибки в работе программы lockfile, конечно, должен удаляться, чтобы при следующем запуске программы прошла проверка на отсутствие lockfile.
Вопрос: как по-питонячьи этот lockfile удалять при завершении программы вне зависимости от причины завершения (удача/неудача) с учетом того, что программа работает как сервис, т. е. один запуск предполагает длительной взаимодействие с разными файлами - интерактивная программа?
try...except...finallу
в скрипте обертке запуска программы? Какой-то хитрый декоратор или хук? Желательно решить это средствами стандартной библиотеки. Поясните для newbie.