.. method:: drain()
- Wait until the write buffer of the underlying transport is flushed.
+ Let the write buffer of the underlying transport a chance to be flushed.
The intended use is to write::
w.write(data)
yield from w.drain()
- When the transport buffer is full (the protocol is paused), block until
- the buffer is (partially) drained and the protocol is resumed. When there
- is nothing to wait for, the yield-from continues immediately.
+ When the size of the transport buffer reaches the high-water limit (the
+ protocol is paused), block until the size of the buffer is drained down
+ to the low-water limit and the protocol is resumed. When there is nothing
+ to wait for, the yield-from continues immediately.
+
+ Yielding from :meth:`drain` gives the opportunity for the loop to
+ schedule the write operation and flush the buffer. It should especially
+ be used when a possibly large amount of data is written to the transport,
+ and the coroutine does not yield-from between calls to :meth:`write`.
This method is a :ref:`coroutine <coroutine>`.