Merge 3.5 (Issue #24487)

This commit is contained in:
Yury Selivanov 2015-06-30 22:13:56 -04:00
commit deca7d515a
4 changed files with 13 additions and 13 deletions

View File

@ -99,7 +99,7 @@ To schedule a callback from a different thread, the
:meth:`BaseEventLoop.call_soon_threadsafe` method should be used. Example to
schedule a coroutine from a different thread::
loop.call_soon_threadsafe(asyncio.async, coro_func())
loop.call_soon_threadsafe(asyncio.ensure_future, coro_func())
Most asyncio objects are not thread safe. You should only worry if you access
objects outside the event loop. For example, to cancel a future, don't call
@ -162,10 +162,10 @@ Detect coroutine objects never scheduled
----------------------------------------
When a coroutine function is called and its result is not passed to
:func:`async` or to the :meth:`BaseEventLoop.create_task` method, the execution
of the coroutine object will never be scheduled which is probably a bug.
:ref:`Enable the debug mode of asyncio <asyncio-debug-mode>` to :ref:`log a
warning <asyncio-logger>` to detect it.
:func:`ensure_future` or to the :meth:`BaseEventLoop.create_task` method,
the execution of the coroutine object will never be scheduled which is
probably a bug. :ref:`Enable the debug mode of asyncio <asyncio-debug-mode>`
to :ref:`log a warning <asyncio-logger>` to detect it.
Example with the bug::
@ -184,7 +184,7 @@ Output in debug mode::
File "test.py", line 7, in <module>
test()
The fix is to call the :func:`async` function or the
The fix is to call the :func:`ensure_future` function or the
:meth:`BaseEventLoop.create_task` method with the coroutine object.
.. seealso::

View File

@ -36,7 +36,7 @@ Run an event loop
Run until the :class:`Future` is done.
If the argument is a :ref:`coroutine object <coroutine>`, it is wrapped by
:func:`async`.
:func:`ensure_future`.
Return the Future's result, or raise its exception.

View File

@ -448,9 +448,9 @@ buffer size reaches the low-water mark.
Coroutines and protocols
------------------------
Coroutines can be scheduled in a protocol method using :func:`async`, but there
is no guarantee made about the execution order. Protocols are not aware of
coroutines created in protocol methods and so will not wait for them.
Coroutines can be scheduled in a protocol method using :func:`ensure_future`,
but there is no guarantee made about 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 <asyncio-streams>` in a
coroutine with ``yield from``. For example, the :meth:`StreamWriter.drain`

View File

@ -59,7 +59,7 @@ the coroutine object returned by the call doesn't do anything until you
schedule its execution. There are two basic ways to start it running:
call ``await coroutine`` or ``yield from coroutine`` from another coroutine
(assuming the other coroutine is already running!), or schedule its execution
using the :func:`async` function or the :meth:`BaseEventLoop.create_task`
using the :func:`ensure_future` function or the :meth:`BaseEventLoop.create_task`
method.
@ -85,7 +85,7 @@ Coroutines (and tasks) can only run when the event loop is running.
even if they are plain Python functions returning a :class:`Future`.
This is intentional to have a freedom of tweaking the implementation
of these functions in the future. If such a function is needed to be
used in a callback-style code, wrap its result with :func:`async`.
used in a callback-style code, wrap its result with :func:`ensure_future`.
.. _asyncio-hello-world-coroutine:
@ -394,7 +394,7 @@ Task
<coroutine>` did not complete. It is probably a bug and a warning is
logged: see :ref:`Pending task destroyed <asyncio-pending-task-destroyed>`.
Don't directly create :class:`Task` instances: use the :func:`async`
Don't directly create :class:`Task` instances: use the :func:`ensure_future`
function or the :meth:`BaseEventLoop.create_task` method.
This class is :ref:`not thread safe <asyncio-multithreading>`.