mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
gh-97696: Improve and fix documentation for asyncio eager tasks (#104256)
This commit is contained in:
parent
15665d896b
commit
c2683fc46d
2 changed files with 20 additions and 2 deletions
|
@ -560,6 +560,13 @@ Eager Task Factory
|
|||
using the provided *custom_task_constructor* when creating a new task instead
|
||||
of the default :class:`Task`.
|
||||
|
||||
*custom_task_constructor* must be a *callable* with the signature matching
|
||||
the signature of :class:`Task.__init__ <Task>`.
|
||||
The callable must return a :class:`asyncio.Task`-compatible object.
|
||||
|
||||
This function returns a *callable* intended to be used as a task factory of an
|
||||
event loop via :meth:`loop.set_task_factory(factory) <loop.set_task_factory>`).
|
||||
|
||||
.. versionadded:: 3.12
|
||||
|
||||
|
||||
|
@ -1014,7 +1021,7 @@ Introspection
|
|||
Task Object
|
||||
===========
|
||||
|
||||
.. class:: Task(coro, *, loop=None, name=None, context=None)
|
||||
.. class:: Task(coro, *, loop=None, name=None, context=None, eager_start=False)
|
||||
|
||||
A :class:`Future-like <Future>` object that runs a Python
|
||||
:ref:`coroutine <coroutine>`. Not thread-safe.
|
||||
|
@ -1054,6 +1061,13 @@ Task Object
|
|||
If no *context* is provided, the Task copies the current context
|
||||
and later runs its coroutine in the copied context.
|
||||
|
||||
An optional keyword-only *eager_start* argument allows eagerly starting
|
||||
the execution of the :class:`asyncio.Task` at task creation time.
|
||||
If set to ``True`` and the event loop is running, the task will start
|
||||
executing the coroutine immediately, until the first time the coroutine
|
||||
blocks. If the coroutine returns or raises without blocking, the task
|
||||
will be finished eagerly and will skip scheduling to the event loop.
|
||||
|
||||
.. versionchanged:: 3.7
|
||||
Added support for the :mod:`contextvars` module.
|
||||
|
||||
|
@ -1067,6 +1081,9 @@ Task Object
|
|||
.. versionchanged:: 3.11
|
||||
Added the *context* parameter.
|
||||
|
||||
.. versionchanged:: 3.12
|
||||
Added the *eager_start* parameter.
|
||||
|
||||
.. method:: done()
|
||||
|
||||
Return ``True`` if the Task is *done*.
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
Optimize :class:`asyncio.TaskGroup` when using :func:`asyncio.eager_task_factory`. Skip scheduling done callbacks when all tasks finish without blocking.
|
||||
Optimize :class:`asyncio.TaskGroup` when using :func:`asyncio.eager_task_factory`.
|
||||
Skip scheduling a done callback if a TaskGroup task completes eagerly.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue