async def close_postgres(resource): print(f"Closing resource")
async def setup_all(self): for task in self._init_tasks: await task() aiosetups
| Package | Purpose | |----------------|--------------------------------------| | async-lru | Async caching | | aiofiles | Async file I/O | | aioredis | Redis client | | asyncpg | PostgreSQL driver | | anyio / asyncio | Low-level async primitives | Any]] = [] self._cleanup_tasks: List[Callable[[]
async def main(): db = await init_db() redis = await init_redis() http_client = await init_http() # ... cleanup code scattered you use a setup registry. # aiosetups.py import asyncio from contextlib import asynccontextmanager from typing import Any, AsyncGenerator, Callable, Dict, List class AsyncSetup: """Register and manage async initializers and cleaners.""" def init (self): self._init_tasks: List[Callable[[], Any]] = [] self._cleanup_tasks: List[Callable[[], Any]] = [] self._resources: Dict[str, Any] = {} Any]] = [] self._resources: Dict[str