From 7d70681364b36dfb07a5f3c7489178f1df3f68fe Mon Sep 17 00:00:00 2001 From: matusdrobuliak66 Date: Thu, 6 Mar 2025 15:28:06 +0100 Subject: [PATCH 1/3] fix --- .../services/background_tasks_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py b/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py index 2f42bc5d870d..d57f08dedac0 100644 --- a/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py +++ b/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py @@ -48,7 +48,7 @@ async def _startup() -> None: # Setup periodic tasks for task in _EFS_GUARDIAN_BACKGROUND_TASKS: app.state.efs_guardian_background_tasks.append( - asyncio.create_task(task["task_func"](), name=task["name"]) + await asyncio.create_task(task["task_func"](), name=task["name"]) ) return _startup From b846226c5b8c4e763cd4b564ac65fbef1c62ccb1 Mon Sep 17 00:00:00 2001 From: matusdrobuliak66 Date: Thu, 6 Mar 2025 16:02:44 +0100 Subject: [PATCH 2/3] fix --- .../services/background_tasks_setup.py | 57 +++++++------------ 1 file changed, 20 insertions(+), 37 deletions(-) diff --git a/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py b/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py index d57f08dedac0..03663a1c414b 100644 --- a/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py +++ b/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py @@ -2,7 +2,6 @@ import logging from collections.abc import Awaitable, Callable from datetime import timedelta -from typing import TypedDict from fastapi import FastAPI from servicelib.async_utils import cancel_wait_task @@ -12,44 +11,31 @@ from .background_tasks import removal_policy_task from .modules.redis import get_redis_lock_client - -@exclusive_periodic( - get_redis_lock_client, - task_interval=timedelta(hours=1), - retry_after=timedelta(minutes=5), -) -async def periodic_removal_policy_task(app: FastAPI) -> None: - await removal_policy_task(app) - - _logger = logging.getLogger(__name__) -class EfsGuardianBackgroundTask(TypedDict): - name: str - task_func: Callable - - -_EFS_GUARDIAN_BACKGROUND_TASKS = [ - EfsGuardianBackgroundTask( - name="efs_removal_policy_task", task_func=periodic_removal_policy_task - ) -] - - def _on_app_startup(app: FastAPI) -> Callable[[], Awaitable[None]]: async def _startup() -> None: with ( - log_context(_logger, logging.INFO, msg="Efs Guardian startup.."), - log_catch(_logger, reraise=False), + log_context(_logger, logging.INFO, msg="Efs Guardian background task "), + log_catch(_logger, reraise=True), ): - app.state.efs_guardian_background_tasks = [] + app.state.efs_guardian_removal_policy_background_task = None - # Setup periodic tasks - for task in _EFS_GUARDIAN_BACKGROUND_TASKS: - app.state.efs_guardian_background_tasks.append( - await asyncio.create_task(task["task_func"](), name=task["name"]) - ) + _logger.info("starting efs guardian removal policy task") + + @exclusive_periodic( + get_redis_lock_client(app), + task_interval=timedelta(hours=1), + retry_after=timedelta(minutes=5), + ) + async def _periodic_removal_policy_task() -> None: + await removal_policy_task(app) + + app.state.efs_guardian_removal_policy_background_task = asyncio.create_task( + _periodic_removal_policy_task(), + name="efs_removal_policy_task", + ) return _startup @@ -63,12 +49,9 @@ async def _stop() -> None: log_catch(_logger, reraise=False), ): assert _app # nosec - if _app.state.efs_guardian_background_tasks: - await asyncio.gather( - *[ - cancel_wait_task(task) - for task in _app.state.efs_guardian_background_tasks - ] + if _app.state.efs_guardian_removal_policy_background_task: + await cancel_wait_task( + _app.state.efs_guardian_removal_policy_background_task ) return _stop From 6a130b60c953eca33e82b782726dff9dcbef141d Mon Sep 17 00:00:00 2001 From: matusdrobuliak66 Date: Thu, 6 Mar 2025 16:48:18 +0100 Subject: [PATCH 3/3] fix --- .../services/background_tasks_setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py b/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py index 03663a1c414b..e1480f84b205 100644 --- a/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py +++ b/services/efs-guardian/src/simcore_service_efs_guardian/services/background_tasks_setup.py @@ -18,7 +18,7 @@ def _on_app_startup(app: FastAPI) -> Callable[[], Awaitable[None]]: async def _startup() -> None: with ( log_context(_logger, logging.INFO, msg="Efs Guardian background task "), - log_catch(_logger, reraise=True), + log_catch(_logger, reraise=False), ): app.state.efs_guardian_removal_policy_background_task = None @@ -34,7 +34,7 @@ async def _periodic_removal_policy_task() -> None: app.state.efs_guardian_removal_policy_background_task = asyncio.create_task( _periodic_removal_policy_task(), - name="efs_removal_policy_task", + name=_periodic_removal_policy_task.__name__, ) return _startup