fastapi-proxy / memory-bank /techContext.md
airsltd's picture
update
0f7bf78
# 技术背景
## 使用的技术
- **编程语言**:Python 3.12
- **Web框架**:FastAPI
- **ASGI服务器**:Uvicorn (用于运行FastAPI应用)
- **HTTP客户端**:httpx (用于异步请求转发)
- **环境管理**:Conda
## 开发设置
- **Conda环境**`any-api`。如果不存在,需要通过`conda create -n any-api python=3.12`创建。
- **环境激活**`conda activate any-api`
- **依赖安装**:通过`pip install -r requirements.txt`安装所有项目依赖。
## 技术约束
- **URL解析规则**:代理URL必须遵循`/v1/{protocol}/{domain}/{path:path}`的格式,以便正确解析目标API的URL。
- **并发模型**:虽然FastAPI本身是异步的,但为了处理高并发请求,需要确保请求转发逻辑是非阻塞的,并充分利用`asyncio`的协程能力。
- **错误处理**:需要考虑代理过程中可能出现的网络错误、超时、目标API响应错误等情况,并进行适当的错误处理和响应。
## 依赖项
根据`requirements.txt`文件:
- `flask` (虽然项目使用FastAPI,但`requirements.txt`中包含Flask,可能用于其他部分或历史遗留,在FastAPI代理中不直接使用)
- `httpx`
- `fastapi`
- `uvicorn`
- `requests` (可能用于同步请求,但推荐在FastAPI中使用`httpx`进行异步请求)
- `python-dotenv` (用于加载环境变量)