From e1b46d3d0d3f170ee3f22ce0e7b851b4d915f991 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Tue, 31 May 2022 07:43:14 +0200 Subject: [PATCH 1/3] Shield background tasks --- starlette/background.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/starlette/background.py b/starlette/background.py index 4aaf7ae3c..095cc6000 100644 --- a/starlette/background.py +++ b/starlette/background.py @@ -1,5 +1,8 @@ import sys import typing +from asyncio import shield + +import anyio if sys.version_info >= (3, 10): # pragma: no cover from typing import ParamSpec @@ -39,5 +42,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() From 0b4ff998743af8b6da8df63f5a0e20fe74cf53b5 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Tue, 31 May 2022 07:44:18 +0200 Subject: [PATCH 2/3] Update starlette/background.py --- starlette/background.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/starlette/background.py b/starlette/background.py index 095cc6000..64a9ed781 100644 --- a/starlette/background.py +++ b/starlette/background.py @@ -1,7 +1,5 @@ import sys import typing -from asyncio import shield - import anyio if sys.version_info >= (3, 10): # pragma: no cover From 57f5d736e208a8da4d8f65531f47f02d2fcaf4a2 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Tue, 31 May 2022 07:45:27 +0200 Subject: [PATCH 3/3] Update starlette/background.py --- starlette/background.py | 1 + 1 file changed, 1 insertion(+) diff --git a/starlette/background.py b/starlette/background.py index 64a9ed781..e4cbbd02b 100644 --- a/starlette/background.py +++ b/starlette/background.py @@ -1,5 +1,6 @@ import sys import typing + import anyio if sys.version_info >= (3, 10): # pragma: no cover