한 번 열고 한 번 닫음
FastAPI 가 startup + shutdown 에 도는 lifespan context manager 줌. Idiomatic 패턴: 거기서 DB connection open + app.state 에 stash, 그 다음 dependency injection 으로 route 에 노출.
두 함정 회피:
- Request 마다 새 connection — 파일 핸들 낭비 + in-memory 캐싱 막음.
- Module import 시점에 open — event loop 존재 전; aiosqlite 가 loop 필요.
Self-reference: 피파
backend/main.py 가 정확히 이 lifespan 패턴: startup 에 SQLite store 한 번 open, migration 실행, app.state.store 에 attach, shutdown 에 깨끗 close. Route 가 Depends 로 store pull.