Nick Coghlan <ncogh...@gmail.com> added the comment:

It's also not unique to with statements - it applies to all finally clauses. 
The longstanding workaround when deterministic cleanup is absolutely critical 
has been to run the "real" application in a subthread, and devote the main 
thread to gracefully terminating the subthread when requested.

When cleanup is critical, but doing it in a deterministic order is less so, 
__del__ methods are often used to fill the gap (although they too can be 
interrupted by a subsequent Ctrl-C).

I also realized that allowing infinite loops in cleanup code to ignore Ctrl-C 
may actually be a tolerable outcome: in the worst case, users can still 
escalate to Ctrl-Break/kill -9/Force stop/etc and pull the entire OS process 
out from under the interpreter. It's not good, but may be worth it in order to 
better handle users pressing Ctrl-C multiple times.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue29988>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to