You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
2.5 KiB
Markdown
139 lines
2.5 KiB
Markdown
# 配置
|
|
|
|
iTi-Flask 内置 `dev`、`test`、`prod` 三套配置。
|
|
默认环境是 `dev`。
|
|
|
|
## 环境选择
|
|
|
|
```bash
|
|
FLASK_ENV=dev uv run python -m flask --app app.py run --debug
|
|
```
|
|
|
|
`create_app(config_name="test")` 可以直接指定环境。
|
|
|
|
业务项目通常传入自己的配置映射:
|
|
|
|
```python
|
|
from iti.config import DevConfig as BaseDevConfig
|
|
from iti.config import ProdConfig as BaseProdConfig
|
|
from iti.config import TestConfig as BaseTestConfig
|
|
|
|
|
|
class DevConfig(BaseDevConfig):
|
|
SQLALCHEMY_DATABASE_URI = "sqlite:///runtime/app_dev.db"
|
|
|
|
|
|
class TestConfig(BaseTestConfig):
|
|
SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"
|
|
|
|
|
|
class ProdConfig(BaseProdConfig):
|
|
pass
|
|
|
|
|
|
config = {
|
|
"dev": DevConfig,
|
|
"test": TestConfig,
|
|
"prod": ProdConfig,
|
|
"default": DevConfig,
|
|
}
|
|
```
|
|
|
|
## env 文件
|
|
|
|
框架会从当前工作目录加载第一个存在的 env 文件:
|
|
|
|
1. `.env.local`
|
|
2. `.env.<FLASK_ENV>`
|
|
3. `.env`
|
|
|
|
也可以用 `ITI_ENV_DIR` 指定查找目录:
|
|
|
|
```bash
|
|
ITI_ENV_DIR=/path/to/app FLASK_ENV=prod uv run python -m flask --app app.py run
|
|
```
|
|
|
|
## 常用配置项
|
|
|
|
| 配置项 | 说明 |
|
|
| --- | --- |
|
|
| `SECRET_KEY` | Flask 密钥 |
|
|
| `JWT_SECRET_KEY` | JWT 密钥 |
|
|
| `DATABASE_URL` | 数据库连接串 |
|
|
| `REDIS_URL` | 生产限流存储地址 |
|
|
| `FRONTEND_ENABLED` | 是否启用 SPA 承载 |
|
|
| `FRONTEND_PATH` | SPA 构建目录 |
|
|
| `SERVICES` | 服务客户端配置 |
|
|
| `TASKS_ENABLED` | 是否启动任务调度线程 |
|
|
|
|
## 数据库
|
|
|
|
默认使用 SQLite。
|
|
|
|
开发环境默认数据库:
|
|
|
|
```text
|
|
runtime/iti-flask_dev.db
|
|
```
|
|
|
|
测试环境使用内存数据库:
|
|
|
|
```text
|
|
sqlite:///:memory:
|
|
```
|
|
|
|
生产环境优先读取 `DATABASE_URL`。
|
|
`postgres://` 会自动转换为 `postgresql://`。
|
|
|
|
## 限流
|
|
|
|
默认启用 Flask-Limiter。
|
|
|
|
开发环境:
|
|
|
|
```python
|
|
RATELIMIT_ENABLED = True
|
|
RATELIMIT_STORAGE_URL = "memory://"
|
|
RATELIMIT_DEFAULT = "1000 per hour"
|
|
```
|
|
|
|
测试环境禁用限流。
|
|
|
|
生产环境默认从 `REDIS_URL` 读取存储地址:
|
|
|
|
```python
|
|
RATELIMIT_DEFAULT = "100 per hour"
|
|
```
|
|
|
|
路由级限流:
|
|
|
|
```python
|
|
from iti.applications.extensions import limiter
|
|
|
|
|
|
@bp.get("/reports")
|
|
@limiter.limit("10 per minute")
|
|
def list_reports():
|
|
return {"data": []}
|
|
```
|
|
|
|
## 缓存
|
|
|
|
框架初始化两个缓存配置:
|
|
|
|
- `CACHE_SIMPLE`
|
|
- `CACHE_REDIS`
|
|
|
|
本地默认启用 `SimpleCache`。
|
|
Redis 缓存默认关闭。
|
|
|
|
## 文件存储
|
|
|
|
本地文件默认写入:
|
|
|
|
```text
|
|
runtime/uploads
|
|
```
|
|
|
|
业务项目可以覆盖 `FILE_STORAGE["LOCAL"]["base_path"]`。
|