fix: rework lifecycle management to optimize cloud deployment (#320)

Signed-off-by: phernandez <paul@basicmachines.co>
Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Paul Hernandez
2025-09-28 15:11:38 -05:00
committed by GitHub
parent 324844a670
commit ea2e93d926
3 changed files with 7 additions and 39 deletions
-31
View File
@@ -2,39 +2,8 @@
Basic Memory FastMCP server.
"""
import asyncio
from contextlib import asynccontextmanager
from dataclasses import dataclass
from typing import AsyncIterator, Optional, Any
from fastmcp import FastMCP
from basic_memory.config import ConfigManager
from basic_memory.services.initialization import initialize_app
@dataclass
class AppContext:
watch_task: Optional[asyncio.Task]
migration_manager: Optional[Any] = None
@asynccontextmanager
async def app_lifespan(server: FastMCP) -> AsyncIterator[AppContext]: # pragma: no cover
""" """
app_config = ConfigManager().config
# Initialize on startup (now returns migration_manager)
migration_manager = await initialize_app(app_config)
try:
yield AppContext(watch_task=None, migration_manager=migration_manager)
finally:
# Cleanup on shutdown - migration tasks will be cancelled automatically
pass
# Create the shared server instance with custom Stytch auth
mcp = FastMCP(
name="Basic Memory",
lifespan=app_lifespan,
)