# 运行时错误: ASGI应用程序实例不可用。

- **ID:** `python/starlette-missing-app-instance`
- **领域:** python
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

尝试在Starlette应用之外访问app实例，例如在导入时或测试中未正确设置。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| 3.x | active | — | — |

## 解决方案

1. **在应用上下文中访问app，例如通过request.app** (95% 成功率)
   ```
   from starlette.requests import Request; async def my_endpoint(request: Request): app = request.app; return JSONResponse({'app': str(app)})
   ```
2. **在测试中使用TestClient时确保app已创建** (90% 成功率)
   ```
   from starlette.testclient import TestClient; from main import app; client = TestClient(app); response = client.get('/')
   ```

## 无效尝试

- **在模块级别直接访问app对象** — app可能尚未创建或已被回收。 (80% 失败率)
- **使用全局变量存储app引用** — 多线程环境下可能导致竞态条件。 (70% 失败率)
