[issue37202] Future.cancelled is not set to true immediately after calling Future.cancel
Andrew Svetlov
report at bugs.python.org
Sat Jun 8 11:23:55 EDT 2019
Andrew Svetlov <andrew.svetlov at gmail.com> added the comment:
I don't follow what reliability guarantee are you requesting.
A cite from task.cancel() docstring:
> Request that this task cancel itself.
This arranges for a CancelledError to be thrown into the
wrapped coroutine on the next cycle through the event loop.
The coroutine then has a chance to clean up or even deny
the request using try/except/finally.
Unlike Future.cancel, this does not guarantee that the
task will be cancelled: the exception might be caught and
acted upon, delaying cancellation of the task or preventing
cancellation completely. The task may also return a value or
raise a different exception.
Immediately after this method is called, Task.cancelled() will
not return True (unless the task was already cancelled). A
task will be marked as cancelled when the wrapped coroutine
terminates with a CancelledError exception (even if cancel()
was not called).
task.cancelled() returns True for canceled and finished tasks, but task.cancel() is a request for cancellation. The requested task needs some time to gracefully finish itself.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue37202>
_______________________________________
More information about the Python-bugs-list
mailing list