108 lines
3.5 KiB
Python
108 lines
3.5 KiB
Python
# config/settings.py
|
||
"""
|
||
应用全局配置文件
|
||
包含应用基本信息、服务配置、数据库配置、日志配置等
|
||
"""
|
||
import os
|
||
from dataclasses import dataclass
|
||
from typing import List, Dict, Any
|
||
|
||
# 应用基本信息
|
||
class AppConfig:
|
||
"""应用基本配置"""
|
||
NAME = "天风任务模块" # 应用名称
|
||
VERSION = "1.0.0" # 应用版本号
|
||
DEBUG = os.environ.get("DEBUG", "True").lower() == "true" # 调试模式开关,可通过环境变量设置
|
||
|
||
# 服务配置
|
||
class ServerConfig:
|
||
"""服务器配置"""
|
||
HOST = os.environ.get("HOST", "0.0.0.0") # 服务监听地址
|
||
PORT = int(os.environ.get("PORT", 8000)) # 服务监听端口
|
||
RELOAD = AppConfig.DEBUG # 是否启用热重载,默认与DEBUG模式一致
|
||
|
||
# API配置
|
||
class ApiConfig:
|
||
"""API配置"""
|
||
PREFIX = "/api/v1"
|
||
TITLE = "天风任务模块API" # API文档标题
|
||
DESCRIPTION = "AMR调度系统中天风任务模块的API接口" # API文档描述
|
||
VERSION = AppConfig.VERSION # API版本号
|
||
|
||
# CORS配置(跨域资源共享)
|
||
class CorsConfig:
|
||
"""CORS配置"""
|
||
ALLOW_ORIGINS = ["*"] # 允许的源,* 表示允许所有源
|
||
ALLOW_CREDENTIALS = True # 是否允许携带凭证
|
||
ALLOW_METHODS = ["*"] # 允许的HTTP方法
|
||
ALLOW_HEADERS = ["*"] # 允许的HTTP头
|
||
|
||
# 数据库配置
|
||
class DatabaseConfig:
|
||
"""数据库配置"""
|
||
HOST = os.environ.get("DB_HOST", "localhost") # 数据库主机
|
||
PORT = int(os.environ.get("DB_PORT", 3306)) # 数据库端口
|
||
USER = os.environ.get("DB_USER", "root") # 数据库用户名
|
||
PASSWORD = os.environ.get("DB_PASSWORD", "password") # 数据库密码
|
||
DATABASE = os.environ.get("DB_NAME", "tianfeng_task") # 数据库名
|
||
CHARSET = "utf8mb4" # 字符集
|
||
|
||
@classmethod
|
||
def as_dict(cls) -> Dict[str, Any]:
|
||
"""返回数据库配置字典"""
|
||
return {
|
||
"host": cls.HOST,
|
||
"port": cls.PORT,
|
||
"user": cls.USER,
|
||
"password": cls.PASSWORD,
|
||
"database": cls.DATABASE,
|
||
"charset": cls.CHARSET
|
||
}
|
||
|
||
# 日志配置
|
||
class LogConfig:
|
||
"""日志配置"""
|
||
LEVEL = os.environ.get("LOG_LEVEL", "INFO") # 日志级别
|
||
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # 日志格式
|
||
FILE = os.environ.get("LOG_FILE", "logs/tianfeng_task.log") # 日志文件路径
|
||
|
||
@classmethod
|
||
def as_dict(cls) -> Dict[str, Any]:
|
||
"""返回日志配置字典"""
|
||
return {
|
||
"level": cls.LEVEL,
|
||
"format": cls.FORMAT,
|
||
"file": cls.FILE
|
||
}
|
||
|
||
# 组件配置
|
||
class ComponentConfig:
|
||
"""组件配置"""
|
||
PACKAGES = ["components"] # 组件包路径
|
||
|
||
# 响应码配置
|
||
class ResponseCode:
|
||
"""响应码配置"""
|
||
SUCCESS = 200 # 成功
|
||
BAD_REQUEST = 400 # 请求错误
|
||
UNAUTHORIZED = 401 # 未授权
|
||
FORBIDDEN = 403 # 禁止访问
|
||
NOT_FOUND = 404 # 资源不存在
|
||
SERVER_ERROR = 500 # 服务器错误
|
||
|
||
# 任务状态配置
|
||
class TaskStatus:
|
||
"""任务状态配置"""
|
||
PENDING = "待执行" # 待执行
|
||
RUNNING = "执行中" # 执行中
|
||
COMPLETED = "已完成" # 已完成
|
||
FAILED = "执行失败" # 执行失败
|
||
CANCELED = "已取消" # 已取消
|
||
PAUSED = "暂停中" # 暂停中
|
||
WAITING = "等待中" # 等待中
|
||
|
||
# 导出日志配置字典,供其他模块使用
|
||
LOG_CONFIG = LogConfig.as_dict()
|
||
|
||
# 导出组件包列表,供组件注册使用
|
||
COMPONENT_PACKAGES = ComponentConfig.PACKAGES |