Nathaniel Smith <n...@pobox.com> added the comment:

Yeah, getaddrinfo isn't actually cancellable (because it's a blocking call that 
has to be run in a thread), but it's side-effect-free so if the user requests 
that it be cancelled then it's safe to return immediately while it keeps 
running in the background, and asyncio does so. But if we've already decided to 
discard the result then it's better to do that silently, like you say.

When trio hits this case, it does silently throw away the result: 
https://github.com/python-trio/trio/blob/aebb42888dd0978c3b74f8c9cdf8aec2ce2cbd73/trio/_threads.py#L372-L377
It's a little bit more obvious in trio's case because there we 100% know that 
if the call to `trio.run` has finished, then there's no-one listening for the 
result, and that the user has explicitly requested this behavior. In asyncio's 
case, I guess in *theory* someone could still be hoping the Future's done 
callback will be invoked even after the loop is closed. This seems unlikely 
though... and in general when the loop is closed then every other registered 
callback is silently discarded, so doing that for run_in_executor seems fine 
too.

----------
nosy: +njs

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

Reply via email to