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.
2.5 KiB
2.5 KiB
配置
iTi-Flask 内置 dev、test、prod 三套配置。
默认环境是 dev。
环境选择
FLASK_ENV=dev uv run python -m flask --app app.py run --debug
create_app(config_name="test") 可以直接指定环境。
业务项目通常传入自己的配置映射:
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 文件:
.env.local.env.<FLASK_ENV>.env
也可以用 ITI_ENV_DIR 指定查找目录:
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。
开发环境默认数据库:
runtime/iti-flask_dev.db
测试环境使用内存数据库:
sqlite:///:memory:
生产环境优先读取 DATABASE_URL。
postgres:// 会自动转换为 postgresql://。
限流
默认启用 Flask-Limiter。
开发环境:
RATELIMIT_ENABLED = True
RATELIMIT_STORAGE_URL = "memory://"
RATELIMIT_DEFAULT = "1000 per hour"
测试环境禁用限流。
生产环境默认从 REDIS_URL 读取存储地址:
RATELIMIT_DEFAULT = "100 per hour"
路由级限流:
from iti.applications.extensions import limiter
@bp.get("/reports")
@limiter.limit("10 per minute")
def list_reports():
return {"data": []}
缓存
框架初始化两个缓存配置:
CACHE_SIMPLECACHE_REDIS
本地默认启用 SimpleCache。
Redis 缓存默认关闭。
文件存储
本地文件默认写入:
runtime/uploads
业务项目可以覆盖 FILE_STORAGE["LOCAL"]["base_path"]。