跳轉至

Settings

Unfazed 配置

Unfazed 的配置文件是一个 Python 模块,其中包含了一系列配置项。你可以通过 settings.py 文件来配置你的 Unfazed 项目。

设计思路

Unfazed 配置文件借鉴了 Django 的思路,他们的区别如下

django 的使用方式



# settings.py
FOO = 'bar'


# app/views.py

from django.conf import settings

print(settings.FOO)  # bar


unfazed 的使用方式



# settings.py

APP_SETTINGS = {
    'FOO': 'bar'
    "CLIENT_CLASS": "app.settings.AppSettings"
}


# app/settings.py

from pydantic import BaseModel


class AppSettings(BaseModel):
    FOO: str


# app/endpoints.py

from unfazed.conf import settings
from .settings import AppSettings


app_settings: AppSettings = settings["APP_SETTINGS"]
print(app_settings.FOO)  # bar


配置部分,unfazed 区别 django 的是将同一个 app 的配置项统一放在一个 dict 中,并且使用 pydantic 做校验,这样开发者在获取配置的时候,能够清晰的知道这个配置项的各种信息。并且在 settings.py 中,即使配置项很多,也清楚的知道这个配置项是属于哪个 app 的,而且随着项目的迭代,开发者能够方便地管理配置项。

UnfazedSettings

UnfazedSettings 是 unfazed 拉起服务所需要的配置, source code

DEBUG

DEBUG: bool 用于控制是否开启调试模式。在调试模式下,Unfazed 在遇到报错时会返回详细的报错信息和当前配置信息。

PROJECT_NAME

PROJECT_NAME: str 项目名称,用于在日志中标识当前项目, 默认为 Unfazed

ROOT_URLCONF

ROOT_URLCONF: str 路由配置根节点,unfazed 会从该地址开始加载路由配置,使用 unfazed-cli 初始化项目后,该项默认为 entry.routes

VERSION

VERSION: str 项目版本号,用于在日志中标识当前项目版本,默认为 0.0.1

MIDDLEWARE

MIDDLEWARE: List[str] 中间件配置,用于在请求处理前后进行一些操作。

例子:



MIDDLEWARE = [
    "unfazed.middleware.internal.cors.CORSMiddleware",
    "unfazed.middleware.internal.gzip.GZipMiddleware",
    "unfazed.middleware.internal.trustedhost.TrustedHostMiddleware",
]

INSTALLED_APPS

INSTALLED_APPS: List[str] 安装的 app 引入路径,用于在启动服务时加载 app。

例子:


INSTALLED_APPS = [
    "unfazed.contrib.admin",
    "unfazed.contrib.auth",
]

关于 app 的详细信息,请参考 app

DATABASE

DATABASE: Dict 数据库配置,用于配置数据库连接信息。

unfazed 使用 tortoise-orm 作为默认的 ORM 框架。

例子:



DATABASE = {
    "CONNECTIONS": {
        "default": {
            "ENGINE": "tortoise.backends.mysql",
            "CREDENTIALS": {
                "host": "localhost",
                "port": "5432",
                "user": "app",
                "password": "app",
                "database": "app",
            },
        }
    }
}

关于数据库的详细配置信息,请参考 database

CACHE

CACHE: Dict 缓存配置,用于配置缓存信息。当前 unfazed 提供 local memory 和 redis 两个 client。

例子:


CACHE = {
    "default": {
        "backend": "unfazed.cache.backends.locmem.LocMemCache",
        "options": {
            "max_size": 1000,
            "ttl": 60,
        },
    },
    "redis": {
        "backend": "unfazed.cache.backends.redis.defaultclient.DefaultBackend",
        "location": "redis://localhost:6379/0",
        "options": {
            "max_connections": 1000,
            "decode_responses": True,
        },
    },
}

关于缓存的详细配置信息,请参考 cache

LOGGING

LOGGING: Dict 日志配置,用于配置日志信息。配置项参考 python logging

例子:



LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "default": {
            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        },
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "formatter": "default",
        },
    },
    "loggers": {
        "unfazed": {
            "handlers": ["console"],
            "level": "DEBUG",
        },
    },
}

关于日志的详细配置信息,请参考 logging

LIFESPAN

LIFESPAN: List[str] 生命周期配置,相关 asgi 文档可见 lifespan

例子:


LIFESPAN = [
    "unfazed.cache.lifespan.CacheClear",
]

关于生命周期的详细信息,请参考 生命周期

OPENAPI

OPENAPI: Dict openapi 配置,unfazed 内置 openapi 支持,按 unfazed 推荐的方式完成 endpoints 中接口的编写,即可自动生成 openapi 文档,包括 swaggerredoc

例子:


OPENAPI = {
    "servers": [
        {
            "url": "http://localhost:9527",
            "description": "development server",
        }
    ],
}

详细配置见 schema.openapi

CORS

CORS: Dict 跨域配置,unfazed 内置跨域支持,需要配合 unfazed.middleware.internal.cors.CORSMiddleware 使用。

详细配置见 cors

TRUSTED_HOST

TRUSTED_HOST: Dict 可信主机配置,用于配置可信主机,需要配合 unfazed.middleware.internal.trustedhost.TrustedHostMiddleware 使用。

详细配置见 trustedhost

GZIP

GZIP: Dict GZIP 配置,用于配置 GZIP 压缩,需要配合 unfazed.middleware.internal.gzip.GZipMiddleware 使用。

详细配置见 gzip

SessionSettings

SessionSettings 是 unfazed session 配置, 配合 unfazed.contrib.session.middleware.SessionMiddleware 使用, [source code](

source code

关于 cookie 的详细信息,请参考 cookie.md)

alias

unfazed session 默认提供了 signing 和 redis 两种 session 引擎。其中如果使用 redis 引擎,可以配置 alias 表明使用哪个 cache client, 默认为 default