mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
bpo-46994: Accept explicit contextvars.Context in asyncio create_task() API (GH-31837)
This commit is contained in:
parent
2153daf0a0
commit
9523c0d84f
13 changed files with 209 additions and 65 deletions
|
@ -426,18 +426,23 @@ class BaseEventLoop(events.AbstractEventLoop):
|
|||
"""Create a Future object attached to the loop."""
|
||||
return futures.Future(loop=self)
|
||||
|
||||
def create_task(self, coro, *, name=None):
|
||||
def create_task(self, coro, *, name=None, context=None):
|
||||
"""Schedule a coroutine object.
|
||||
|
||||
Return a task object.
|
||||
"""
|
||||
self._check_closed()
|
||||
if self._task_factory is None:
|
||||
task = tasks.Task(coro, loop=self, name=name)
|
||||
task = tasks.Task(coro, loop=self, name=name, context=context)
|
||||
if task._source_traceback:
|
||||
del task._source_traceback[-1]
|
||||
else:
|
||||
task = self._task_factory(self, coro)
|
||||
if context is None:
|
||||
# Use legacy API if context is not needed
|
||||
task = self._task_factory(self, coro)
|
||||
else:
|
||||
task = self._task_factory(self, coro, context=context)
|
||||
|
||||
tasks._set_task_name(task, name)
|
||||
|
||||
return task
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue