Skip to content

Commit

Permalink
pythongh-97696 Remove unnecessary check for eager_start kwarg (pytho…
Browse files Browse the repository at this point in the history
…n#104188)

Instead, add docstring to create_eager_task_factory.
  • Loading branch information
jbower-fb authored May 9, 2023
1 parent faf1962 commit bf89d42
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions Lib/asyncio/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -942,18 +942,31 @@ def callback():


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)


Expand Down

0 comments on commit bf89d42

Please sign in to comment.