Andrew Svetlov <[email protected]> added the comment:
Guido, the third case:
The third edge case is: explicit cancel() happened *after* the timeout (but
still in the
same iteration)?
timeout current-iteration (calls .cancel() after timeout) next-iteration
| | |
>---+----------------------------+---------------------------------+---------->
> future
a) timeout occurs, `call_later()`' callback is called, the task cancellation
is scheduled
on the next loop iteration by `task.cancel()` call
b) other activity (e.g. socket-ready event that processed after timers in
asyncio)
explicitly calls `.cancel()`. The second request is ignored, `.cancel()`
returns `False`.
c) On the next iteration, the task wakes up with CancelledError with a
message that points
on the timeout context manager.
It means that the timeout is processed, explicit `.cancel()` call that happens
*after*
timeout is ignored. The first event wins, as usual.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue46771>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com