aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/asyncio/tasks.py
diff options
context:
space:
mode:
authorJacob Bower <1978924+jbower-fb@users.noreply.github.com>2023-05-08 17:51:58 -0700
committerGitHub <noreply@github.com>2023-05-09 00:51:58 +0000
commitbf89d4283a28dd00836f2c312a9255f543f93fc7 (patch)
treea993cbcb1a6416098bca5b7f8d1af9a28cb612ee /Lib/asyncio/tasks.py
parentfaf196213e60d8a90773e9e5680d3252bd294643 (diff)
downloadcpython-bf89d4283a28dd00836f2c312a9255f543f93fc7.tar.gz
cpython-bf89d4283a28dd00836f2c312a9255f543f93fc7.zip
gh-97696 Remove unnecessary check for eager_start kwarg (#104188)
Instead, add docstring to create_eager_task_factory.
Diffstat (limited to 'Lib/asyncio/tasks.py')
-rw-r--r--Lib/asyncio/tasks.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 7eb647bd129..8d5bde09ea9 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -942,18 +942,31 @@ def run_coroutine_threadsafe(coro, loop):
def create_eager_task_factory(custom_task_constructor):
+ """Create a function suitable for use as a task factory on an event-loop.
- if "eager_start" not in inspect.signature(custom_task_constructor).parameters:
- raise TypeError(
- "Provided constructor does not support eager task execution")
+ Example usage:
+
+ loop.set_task_factory(
+ asyncio.create_eager_task_factory(my_task_constructor))
+
+ Now, tasks created will be started immediately (rather than being first
+ scheduled to an event loop). The constructor argument can be any callable
+ that returns a Task-compatible object and has a signature compatible
+ with `Task.__init__`; it must have the `eager_start` keyword argument.
+
+ Most applications will use `Task` for `custom_task_constructor` and in
+ this case there's no need to call `create_eager_task_factory()`
+ directly. Instead the global `eager_task_factory` instance can be
+ used. E.g. `loop.set_task_factory(asyncio.eager_task_factory)`.
+ """
def factory(loop, coro, *, name=None, context=None):
return custom_task_constructor(
coro, loop=loop, name=name, context=context, eager_start=True)
-
return factory
+
eager_task_factory = create_eager_task_factory(Task)