diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-06-02 21:06:46 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-06-02 21:06:46 (GMT) |
commit | 8d21357fb5d15dcebb790a0594de3c7afddd8493 (patch) | |
tree | 106754f9a08a342f1cf191e09aac0d1e5efca555 | |
parent | 66f29284797c31190ad06554d9909d7ed8a894d1 (diff) | |
download | cpython-8d21357fb5d15dcebb790a0594de3c7afddd8493.zip cpython-8d21357fb5d15dcebb790a0594de3c7afddd8493.tar.gz cpython-8d21357fb5d15dcebb790a0594de3c7afddd8493.tar.bz2 |
Issue #21601: Document asyncio.Task.cancel(). Initial patch written by Vajrasky
Kok.
-rw-r--r-- | Doc/library/asyncio-task.rst | 22 | ||||
-rw-r--r-- | Lib/asyncio/tasks.py | 4 |
2 files changed, 23 insertions, 3 deletions
diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index 67eaccd..eb254a9 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -327,7 +327,27 @@ Task ``None`` is returned when called not in the context of a :class:`Task`. - .. method:: get_stack(self, \*, limit=None) + .. method:: cancel() + + Request this task to cancel itself. + + This arranges for a :exc:`~concurrent.futures.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. + + Contrary to :meth:`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 it completely. The task may also + return a value or raise a different exception. + + Immediately after this method is called, :meth:`~Future.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 + :exc:`~concurrent.futures.CancelledError` exception (even if + :meth:`cancel` was not called). + + .. method:: get_stack(\*, limit=None) Return the list of stack frames for this task's coroutine. diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index 45a6342..2aa568b 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -269,9 +269,9 @@ class Task(futures.Future): print(line, file=file, end='') def cancel(self): - """Request that a task to cancel itself. + """Request this task to cancel itself. - This arranges for a CancellationError to be thrown into the + 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. |