Guido van Rossum <gu...@python.org> added the comment:

Andrew, thanks for explaining this.

The key thing I was missing was that the root cause of the problem is that 
Future.__del__ is trying to log an error about the un-awaited task by calling 
the exception handler directly. That actually feels a little dodgy.

This is why I'm not yet comfortable with (d). Looking at 
call_exception_handler(), whether it calls the default handler or a custom 
handler, it explicitly checks for SystemExit and KeyboardInterrupt and 
re-raises those. And only those -- everything ends up logging an error.

Which makes me wonder. Maybe that error in Future.__del__ should not call any 
exception handler at all, but just call logger.error()? Or maybe Future.__del__ 
should catch exceptions coming out of there and log an error? Maybe a modified 
version of (d), but only implemented in Future.__del__, not in 
call_exception_handler()?

----------

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

Reply via email to