diff options
author | Jacob Bower <1978924+jbower-fb@users.noreply.github.com> | 2023-05-08 17:51:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-09 00:51:58 +0000 |
commit | bf89d4283a28dd00836f2c312a9255f543f93fc7 (patch) | |
tree | a993cbcb1a6416098bca5b7f8d1af9a28cb612ee /Lib/asyncio/tasks.py | |
parent | faf196213e60d8a90773e9e5680d3252bd294643 (diff) | |
download | cpython-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.py | 21 |
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) |