From 4b4f9ebfea4148b9d483aefb24f88c18e1f505b4 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 24 Jan 2014 17:33:20 +0100 Subject: [PATCH] asyncio doc: add a "Coroutines and protocols" section --- Doc/library/asyncio-protocol.rst | 12 ++++++++++++ Doc/library/asyncio-stream.rst | 2 ++ 2 files changed, 14 insertions(+) diff --git a/Doc/library/asyncio-protocol.rst b/Doc/library/asyncio-protocol.rst index 9e02e84bd97..d35c70da9aa 100644 --- a/Doc/library/asyncio-protocol.rst +++ b/Doc/library/asyncio-protocol.rst @@ -403,6 +403,18 @@ buffer size reaches the low-water mark. mark is zero. +Coroutines and protocols +------------------------ + +Coroutines can be scheduled in a protocol method using :func:`async`, but there +is not guarantee on the execution order. Protocols are not aware of coroutines +created in protocol methods and so will not wait for them. + +To have a reliable execution order, use :ref:`stream objects ` in a +coroutine with ``yield from``. For example, the :meth:`StreamWriter.drain` +coroutine can be used to wait until the write buffer is flushed. + + Server ------ diff --git a/Doc/library/asyncio-stream.rst b/Doc/library/asyncio-stream.rst index 07725168881..f2a9f1268e6 100644 --- a/Doc/library/asyncio-stream.rst +++ b/Doc/library/asyncio-stream.rst @@ -1,5 +1,7 @@ .. currentmodule:: asyncio +.. _streams: + ++++++++++++++++++++++++ Streams (high-level API) ++++++++++++++++++++++++