Files
hot_comment_radar/app/config.py
T

42 lines
1.2 KiB
Python

from functools import lru_cache
from pydantic import field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore")
app_env: str = "development"
database_url: str = "sqlite:///data/app.db"
tikhub_api_key: str = ""
tikhub_base_url: str = "https://api.tikhub.io"
ai_provider: str = "openai-compatible"
ai_base_url: str = ""
ai_api_key: str = ""
ai_model: str = ""
ai_batch_size: int = 20
ai_concurrency: int = 2
ai_max_retries: int = 3
ai_timeout_seconds: int = 30
http_timeout_seconds: int = 20
http_max_retries: int = 3
crawl_page_interval_seconds: float = 1.5
hot_limit_min: int = 1
hot_limit_max: int = 10
item_limit_per_hot_min: int = 1
item_limit_per_hot_max: int = 10
comment_limit_per_item_min: int = 10
comment_limit_per_item_max: int = 100
@field_validator("ai_concurrency", mode="after")
@classmethod
def cap_ai_concurrency(cls, value: int) -> int:
return min(value, 3)
@lru_cache
def get_settings() -> Settings:
return Settings()