INNER CODE UNIT · Python

lifespan

ArcReel/ArcReel · server/app.py:344

async def lifespan(app: FastAPI):
    """应用生命周期管理"""
    # Startup
    # 安全红线检测:先父进程 env 净化,再 sandbox 工具可用性,再 docker 检测
    assert_no_provider_secrets_in_environ()
    sandbox_enabled = check_sandbox_available()
    # detect_docker_environment 仅在 sandbox 可用平台有意义(Linux 路径探测);
    # Windows 回退时跳过,避免无意义的文件系统调用。
    is_docker = detect_docker_environment() if sandbox_enabled else False
    logger.info("Sandbox runtime: enabled=%s docker=%s", sandbox_enabled, is_docker)

    app.state.in_docker = is_docker
    app.state.sandbox_enabled = sandbox_enabled

    # 日志文件持久化:先一次性平移旧 app_data_dir()/logs,再挂 file handler。
    # 顺序很重要——file handler 会 mkdir 新目录,提前挂会让 migrate 的 rename
    # 撞到 "新旧都存在" 分支放弃迁移。
    await asyncio.to_thread(migrate_legacy_log_dir)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…