Я думаю, что я прочитал, что исключения внутри with
не позволяют правильному вызову __exit__
. Если я ошибаюсь в этой заметке, прошу простить мое невежество.
Итак, у меня есть некоторый псевдокод, моя цель - использовать контекст блокировки, который при __enter__
записывает начало datetime и возвращает идентификатор блокировки, а после __exit__
записывает конец datetime и освобождает блокировку:
def main():
raise Exception
with cron.lock() as lockid:
print('Got lock: %i' % lockid)
main()
Как я могу все еще повышать ошибки в дополнение к существующему контексту?
Примечание. Я намеренно поднимаю базовое исключение в этом псевдокоде, поскольку я хочу выйти безопасно при любом исключении, а не только ожидаемые исключения.
Примечание. Альтернативные/стандартные методы предотвращения concurrency не имеют значения, я хочу применить эти знания к любому управлению общим контекстом. Я не знаю, имеют ли разные контексты разные причуды.
PS. Соответствует ли блок finally
?