From 1c4b892d71cad83efcafc88ab6c57ebd0d50a633 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 12 Dec 2013 12:35:17 +0100 Subject: Add a sequence diagram for the chained coroutines example --- Doc/library/asyncio-task.rst | 11 ++++++++++- Doc/library/tulip_coro.dia | Bin 0 -> 4332 bytes Doc/library/tulip_coro.png | Bin 0 -> 46386 bytes 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 Doc/library/tulip_coro.dia create mode 100644 Doc/library/tulip_coro.png diff --git a/Doc/library/asyncio-task.rst b/Doc/library/asyncio-task.rst index afcfea8..8361257 100644 --- a/Doc/library/asyncio-task.rst +++ b/Doc/library/asyncio-task.rst @@ -74,7 +74,6 @@ Print ``"Hello World"`` every two seconds using a coroutine:: loop = asyncio.get_event_loop() loop.run_until_complete(greet_every_two_seconds()) - .. seealso:: :ref:`Hello World example using a callback `. @@ -104,6 +103,16 @@ Example chaining coroutines:: ``compute()`` is chained to ``print_sum()``: ``print_sum()`` coroutine waits until ``compute()`` is completed before returing its result. +Sequence diagram of the example: + +.. image:: tulip_coro.png + :align: center + +The diagram shows the logical links between the task and the two coroutines, it +does not describe exactly how things work internally. For example, the sleep +coroutine creates an internal future which uses +:meth:`BaseEventLoop.call_later` to wake up the task in 1 second. + InvalidStateError ----------------- diff --git a/Doc/library/tulip_coro.dia b/Doc/library/tulip_coro.dia new file mode 100644 index 0000000..c4e19a0 Binary files /dev/null and b/Doc/library/tulip_coro.dia differ diff --git a/Doc/library/tulip_coro.png b/Doc/library/tulip_coro.png new file mode 100644 index 0000000..e083bc3 Binary files /dev/null and b/Doc/library/tulip_coro.png differ -- cgit v0.12