实现线程管理器以支持高并发场景,添加GIL-free模式提升Python 3.14下的多线程性能 新增B站API集成和本地文件服务器功能,改进镜像插件支持GIF处理 更新文档说明多线程架构和GIL-free模式的使用方法
126 lines
3.0 KiB
Python
126 lines
3.0 KiB
Python
"""
|
|
Pydantic 配置模型模块
|
|
|
|
该模块使用 Pydantic 定义了与 `config.toml` 文件结构完全对应的配置模型。
|
|
这使得配置的加载、校验和访问都变得类型安全和健壮。
|
|
"""
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class NapCatWSModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[napcat_ws]` 配置块。
|
|
"""
|
|
uri: str
|
|
token: str
|
|
reconnect_interval: int = 5
|
|
|
|
|
|
class BotModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[bot]` 配置块。
|
|
"""
|
|
command: List[str] = Field(default_factory=lambda: ["/"])
|
|
ignore_self_message: bool = True
|
|
permission_denied_message: str = "权限不足,需要 {permission_name} 权限"
|
|
|
|
class ReverseWSModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[reverse_ws]` 配置块。
|
|
"""
|
|
enabled: bool = False
|
|
host: str = "0.0.0.0"
|
|
port: int = 3002
|
|
token: Optional[str] = None
|
|
|
|
|
|
class RedisModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[redis]` 配置块。
|
|
"""
|
|
host: str
|
|
port: int
|
|
db: int
|
|
password: str
|
|
|
|
|
|
class MySQLModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[mysql]` 配置块。
|
|
"""
|
|
host: str
|
|
port: int
|
|
user: str
|
|
password: str
|
|
db: str
|
|
charset: str = "utf8mb4"
|
|
|
|
|
|
|
|
class DockerModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[docker]` 配置块。
|
|
"""
|
|
base_url: Optional[str] = None
|
|
sandbox_image: str = "python-sandbox:latest"
|
|
timeout: int = 10
|
|
concurrency_limit: int = 5
|
|
tls_verify: bool = False
|
|
ca_cert_path: Optional[str] = None
|
|
client_cert_path: Optional[str] = None
|
|
client_key_path: Optional[str] = None
|
|
|
|
class ImageManagerModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[image_manager]` 配置块。
|
|
"""
|
|
image_height: int = 1920
|
|
image_width: int = 1080
|
|
|
|
|
|
class ThreadingModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[threading]` 配置块。
|
|
"""
|
|
max_workers: int = Field(default=10, ge=1, le=100)
|
|
client_max_workers: int = Field(default=5, ge=1, le=50)
|
|
thread_name_prefix: str = "NeoBot-Thread"
|
|
|
|
|
|
class BilibiliModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[bilibili]` 配置块。
|
|
"""
|
|
sessdata: Optional[str] = None
|
|
bili_jct: Optional[str] = None
|
|
buvid3: Optional[str] = None
|
|
dedeuserid: Optional[str] = None
|
|
|
|
|
|
class LocalFileServerModel(BaseModel):
|
|
"""
|
|
对应 `config.toml` 中的 `[local_file_server]` 配置块。
|
|
"""
|
|
enabled: bool = True
|
|
host: str = "0.0.0.0"
|
|
port: int = 3003
|
|
|
|
|
|
class ConfigModel(BaseModel):
|
|
"""
|
|
顶层配置模型,整合了所有子配置块。
|
|
"""
|
|
napcat_ws: NapCatWSModel
|
|
bot: BotModel
|
|
redis: RedisModel
|
|
mysql: MySQLModel
|
|
docker: DockerModel
|
|
image_manager: ImageManagerModel
|
|
reverse_ws: ReverseWSModel
|
|
threading: ThreadingModel = Field(default_factory=ThreadingModel)
|
|
bilibili: BilibiliModel = Field(default_factory=BilibiliModel)
|
|
local_file_server: LocalFileServerModel = Field(default_factory=LocalFileServerModel)
|
|
|
|
|