Peng Ding
feat: add two-tier render cache with S3-compatible storage
f8b5624
Raw
History Blame Contribute Delete
2.18 kB
"""Application settings loaded from environment variables."""
from __future__ import annotations
import os
class Settings:
"""Configuration from ``VEILRENDER_*`` environment variables."""
def __init__(self) -> None:
self.api_token: str | None = os.environ.get("VEILRENDER_API_TOKEN")
self.port: int = int(os.environ.get("VEILRENDER_PORT", "7860"))
self.host: str = os.environ.get("VEILRENDER_HOST", "0.0.0.0")
self.timeout: int = int(os.environ.get("VEILRENDER_TIMEOUT", "30000"))
self.viewport_width: int = int(
os.environ.get("VEILRENDER_VIEWPORT_WIDTH", "1280")
)
self.viewport_height: int = int(
os.environ.get("VEILRENDER_VIEWPORT_HEIGHT", "720")
)
self.max_concurrent: int = int(os.environ.get("VEILRENDER_MAX_CONCURRENT", "5"))
self.resource_filter: bool = (
os.environ.get("VEILRENDER_RESOURCE_FILTER", "true").lower() == "true"
)
_extra = os.environ.get("VEILRENDER_BLOCKED_DOMAINS_EXTRA", "")
self.blocked_domains_extra: list[str] = (
[d.strip() for d in _extra.split(",") if d.strip()] if _extra else []
)
# Cache settings
self.cache_enabled: bool = (
os.environ.get("VEILRENDER_CACHE_ENABLED", "false").lower() == "true"
)
self.cache_ttl: int = int(os.environ.get("VEILRENDER_CACHE_TTL", "86400"))
self.cache_l1_maxsize: int = int(
os.environ.get("VEILRENDER_CACHE_L1_MAXSIZE", "100")
)
# S3-compatible storage (Cloudflare R2, Oracle Object Storage, etc.)
self.s3_endpoint: str | None = os.environ.get("VEILRENDER_S3_ENDPOINT")
self.s3_access_key: str | None = os.environ.get("VEILRENDER_S3_ACCESS_KEY")
self.s3_secret_key: str | None = os.environ.get("VEILRENDER_S3_SECRET_KEY")
self.s3_bucket: str = os.environ.get("VEILRENDER_S3_BUCKET", "veilrender-cache")
self.s3_region: str = os.environ.get("VEILRENDER_S3_REGION", "auto")
self.s3_secure: bool = (
os.environ.get("VEILRENDER_S3_SECURE", "true").lower() == "true"
)
settings = Settings()