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.
iTi-Flask/docs/CONFIGURATION.md

2.5 KiB

配置

iTi-Flask 内置 devtestprod 三套配置。 默认环境是 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 文件:

  1. .env.local
  2. .env.<FLASK_ENV>
  3. .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_URLpostgres:// 会自动转换为 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_SIMPLE
  • CACHE_REDIS

本地默认启用 SimpleCache。 Redis 缓存默认关闭。

文件存储

本地文件默认写入:

runtime/uploads

业务项目可以覆盖 FILE_STORAGE["LOCAL"]["base_path"]