Merge remote-tracking branch 'origin/develop' into fix/develop-ruff-f401
This commit is contained in:
@@ -1,61 +1,22 @@
|
||||
"""Worker 服务配置 — 继承 SharedSettings,只追加 Worker 特有字段。
|
||||
"""Worker 服务配置(向后兼容层)。
|
||||
|
||||
通用配置(DB/Redis/Celery/OSS/CosyVoice/Doubao 等)统一在
|
||||
packages/shared/config.py 的 SharedSettings 中定义,这里不重复。
|
||||
统一配置已迁移到 packages.config.worker_settings。
|
||||
新代码请使用:
|
||||
from packages.config import WorkerSettings, get_worker_settings
|
||||
"""
|
||||
|
||||
import os
|
||||
from typing import Optional
|
||||
|
||||
from pydantic_settings import SettingsConfigDict
|
||||
|
||||
from packages.shared.config import SharedSettings
|
||||
from packages.config import WorkerSettings, get_worker_settings, reload_settings_cache
|
||||
|
||||
|
||||
class WorkerSettings(SharedSettings):
|
||||
"""Worker 服务专用配置。
|
||||
|
||||
通用配置继承自 SharedSettings,这里只定义 Worker 独有字段。
|
||||
Celery broker/backend 使用继承的 celery_broker_url / celery_result_backend;
|
||||
历史上 Worker 使用 broker_url / result_backend 字段名,通过 property 别名兼容。
|
||||
"""
|
||||
|
||||
# ── Worker 特有 ────────────────────────────────────────────────────
|
||||
worker_name: str = "xiaoxia-saas-worker"
|
||||
worker_concurrency: int = 4
|
||||
worker_max_tasks_per_child: int = 1000
|
||||
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=".env",
|
||||
env_file_encoding="utf-8",
|
||||
case_sensitive=False,
|
||||
extra="ignore",
|
||||
)
|
||||
|
||||
# ── 向后兼容:Celery 字段名别名 ──────────────────────────────────
|
||||
@property
|
||||
def broker_url(self) -> str:
|
||||
return self.celery_broker_url
|
||||
|
||||
@property
|
||||
def result_backend(self) -> str:
|
||||
return self.celery_result_backend
|
||||
def get_settings() -> WorkerSettings:
|
||||
"""获取 Worker 配置单例(向后兼容)。"""
|
||||
return get_worker_settings()
|
||||
|
||||
|
||||
_settings: Optional["WorkerSettings"] = None
|
||||
def reload_settings() -> WorkerSettings:
|
||||
"""重新加载配置(测试用)。"""
|
||||
reload_settings_cache()
|
||||
return get_worker_settings()
|
||||
|
||||
|
||||
def get_settings() -> "WorkerSettings":
|
||||
"""获取 Worker 配置单例。
|
||||
|
||||
优先读取 APP_ENV 指定的环境文件(.env.{env}),不存在则读 .env。
|
||||
"""
|
||||
global _settings
|
||||
if _settings is None:
|
||||
env = os.getenv("APP_ENV", "development")
|
||||
env_file = f".env.{env}" if env != "development" else ".env"
|
||||
if os.path.exists(env_file):
|
||||
_settings = WorkerSettings(_env_file=env_file)
|
||||
else:
|
||||
_settings = WorkerSettings()
|
||||
return _settings
|
||||
__all__ = ["WorkerSettings", "get_settings", "reload_settings"]
|
||||
|
||||
Reference in New Issue
Block a user