mirror of https://github.com/python/cpython
gh-112622: Pass name to loop create_task method (#112623)
This affects task creation through either `asyncio.create_task()` or `TaskGroup.create_task()` -- the redundant call to `task.set_name()` is skipped. We still call `set_name()` when a task factory is involved, because the task factory call signature (unfortunately) doesn't take a `name` argument.
This commit is contained in:
parent
c6e614fd81
commit
a3a1cb4845
|
@ -158,10 +158,10 @@ class TaskGroup:
|
|||
if self._aborting:
|
||||
raise RuntimeError(f"TaskGroup {self!r} is shutting down")
|
||||
if context is None:
|
||||
task = self._loop.create_task(coro)
|
||||
task = self._loop.create_task(coro, name=name)
|
||||
else:
|
||||
task = self._loop.create_task(coro, context=context)
|
||||
task.set_name(name)
|
||||
task = self._loop.create_task(coro, name=name, context=context)
|
||||
|
||||
# optimization: Immediately call the done callback if the task is
|
||||
# already done (e.g. if the coro was able to complete eagerly),
|
||||
# and skip scheduling a done callback
|
||||
|
|
|
@ -404,11 +404,10 @@ def create_task(coro, *, name=None, context=None):
|
|||
loop = events.get_running_loop()
|
||||
if context is None:
|
||||
# Use legacy API if context is not needed
|
||||
task = loop.create_task(coro)
|
||||
task = loop.create_task(coro, name=name)
|
||||
else:
|
||||
task = loop.create_task(coro, context=context)
|
||||
task = loop.create_task(coro, name=name, context=context)
|
||||
|
||||
task.set_name(name)
|
||||
return task
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Ensure ``name`` parameter is passed to event loop in
|
||||
:func:`asyncio.create_task`.
|
Loading…
Reference in New Issue