mirror of https://github.com/python/cpython
Merge 3.5 (Issue #24487)
This commit is contained in:
commit
deca7d515a
|
@ -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::
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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>`.
|
||||
|
|
Loading…
Reference in New Issue