59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||
|
||
|
||
class Settings(BaseSettings):
|
||
"""项目配置,通过环境变量或项目根目录下的 .env 文件覆盖。"""
|
||
|
||
env: str = "dev"
|
||
|
||
# ──────────── MySQL(业务库)────────────
|
||
db_host: str = "192.168.31.105"
|
||
db_port: int = 3306
|
||
db_user: str = "root"
|
||
db_password: str = "123456"
|
||
db_name: str = "offerpie"
|
||
mysql_pool_size: int = 10
|
||
mysql_max_overflow: int = 10
|
||
|
||
# 连接池获取连接的等待超时(秒)
|
||
db_pool_timeout: int = 30
|
||
|
||
# 火山引擎(OpenAI 兼容风格)
|
||
volcengine_api_key: str = ""
|
||
volcengine_base_url: str = "https://ark.cn-beijing.volces.com/api/v3"
|
||
|
||
# Claude(Anthropic 风格)
|
||
anthropic_api_key: str = ""
|
||
anthropic_base_url: str = ""
|
||
|
||
# ──────────── 阿里云 OSS ────────────
|
||
oss_access_key_id: str = ""
|
||
oss_access_key_secret: str = ""
|
||
oss_endpoint: str = "oss-cn-guangzhou.aliyuncs.com"
|
||
oss_bucket: str = "offerpie"
|
||
oss_upload_dir: str = "company/logo"
|
||
oss_domain: str = "https://offerpie.oss-cn-guangzhou.aliyuncs.com"
|
||
|
||
# ──────────── 爬虫并发 ────────────
|
||
# 公告落库并发线程数,不要超过 mysql_pool_size + mysql_max_overflow
|
||
spider_max_workers: int = 5
|
||
|
||
# ──────────── 日志 ────────────
|
||
logging_level: str = "INFO"
|
||
log_file_name: str = "spider.log"
|
||
|
||
@property
|
||
def mysql_url(self) -> str:
|
||
from urllib.parse import quote
|
||
return (
|
||
f"mysql+pymysql://{self.db_user}:{quote(self.db_password, safe='')}"
|
||
f"@{self.db_host}:{self.db_port}/{self.db_name}"
|
||
)
|
||
|
||
model_config = SettingsConfigDict(
|
||
env_file=".env",
|
||
env_file_encoding="utf-8",
|
||
case_sensitive=False,
|
||
extra="ignore",
|
||
)
|