diff --git a/starlette/background.py b/starlette/background.py index 4aaf7ae3c..e4cbbd02b 100644 --- a/starlette/background.py +++ b/starlette/background.py @@ -1,6 +1,8 @@ import sys import typing +import anyio + if sys.version_info >= (3, 10): # pragma: no cover from typing import ParamSpec else: # pragma: no cover @@ -39,5 +41,7 @@ def add_task( self.tasks.append(task) async def __call__(self) -> None: - for task in self.tasks: - await task() + async with anyio.create_task_group(): + with anyio.CancelScope(shield=True): + for task in self.tasks: + await task()