[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