diff options
| author | Andrew Svetlov <andrew.svetlov@gmail.com> | 2022-03-14 13:54:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-14 13:54:13 +0200 |
| commit | 9523c0d84f351a610dc651b234461eb015fa3b82 (patch) | |
| tree | 5f6f6bed4353eb9c149f65ab2dc95db12d378db3 /Lib/asyncio/base_events.py | |
| parent | 2153daf0a02a598ed5df93f2f224c1ab2a2cca0d (diff) | |
| download | cpython-git-9523c0d84f351a610dc651b234461eb015fa3b82.tar.gz | |
bpo-46994: Accept explicit contextvars.Context in asyncio create_task() API (GH-31837)
Diffstat (limited to 'Lib/asyncio/base_events.py')
| -rw-r--r-- | Lib/asyncio/base_events.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 51c4e664d7..5eea1658df 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -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 |
