summaryrefslogtreecommitdiff
path: root/asyncio/tasks.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2014-03-31 10:29:24 -0700
committerGuido van Rossum <guido@python.org>2014-03-31 10:29:24 -0700
commit4b0dc955ee1a69ed468b11a2fb00cf2ca6fb4448 (patch)
tree8c1b57ac21ce5b26eaeb04f57f8c4daf378da0b7 /asyncio/tasks.py
parentf2c8bfecbcf5b0ba08c50e3f83c0b3f55c51a512 (diff)
downloadtrollius-4b0dc955ee1a69ed468b11a2fb00cf2ca6fb4448.tar.gz
Document Task.cancel() properly.
Diffstat (limited to 'asyncio/tasks.py')
-rw-r--r--asyncio/tasks.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/asyncio/tasks.py b/asyncio/tasks.py
index 0967e7e..a84ad26 100644
--- a/asyncio/tasks.py
+++ b/asyncio/tasks.py
@@ -250,6 +250,25 @@ class Task(futures.Future):
print(line, file=file, end='')
def cancel(self):
+ """Request that a task to cancel itself.
+
+ This arranges for a CancellationError 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 Future.cancel(), this does not guarantee that the
+ task will 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, 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).
+ """
if self.done():
return False
if self._fut_waiter is not None: