Spaces:
Runtime error
Runtime error
from __future__ import annotations | |
from typing import Final, Optional | |
from pydantic import SecretStr, HttpUrl, Field | |
from pydantic_settings import BaseSettings, SettingsConfigDict | |
class Settings(BaseSettings): | |
""" | |
Core application settings. | |
Reads environment variables and .env file. | |
""" | |
# Supabase Settings | |
SUPABASE_URL: HttpUrl | |
SUPABASE_SERVICE_KEY: SecretStr | |
SUPABASE_ANON_KEY: SecretStr | |
SUPABASE_JWT_SECRET: Optional[SecretStr] = None # Optional for local dev | |
# Hugging Face API Token | |
HF_API_TOKEN: Optional[SecretStr] = None | |
# Redis settings | |
REDIS_URL: str = "redis://localhost:6379/0" | |
REDIS_PASSWORD: Optional[SecretStr] = None | |
# Toggle Redis cache layer | |
ENABLE_REDIS_CACHE: bool = True | |
# ββββββββββββββββββββββββββββββββ Security ββββββββββββββββββββββββββββββββ | |
# JWT secret key. NEVER hard-code in source; override with env variable in production. | |
SECRET_KEY: SecretStr = Field("change-me", env="SECRET_KEY") | |
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(60 * 24 * 7, env="ACCESS_TOKEN_EXPIRE_MINUTES") # 1 week by default | |
# Worker settings | |
WORKER_CONCURRENCY: int = 10 # Increased from 5 for better parallel performance | |
# Batch processing chunk size for Celery dataset tasks | |
DATASET_BATCH_CHUNK_SIZE: int = 50 | |
# Tell pydantic-settings to auto-load `.env` if present | |
model_config: Final = SettingsConfigDict( | |
env_file=".env", | |
case_sensitive=False, | |
extra="ignore" | |
) | |
# Single, shared instance of settings | |
settings = Settings() | |