config.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from __future__ import annotations
  2. import os
  3. from dataclasses import dataclass
  4. def _get_int(name: str, default: int) -> int:
  5. raw = os.getenv(name)
  6. if raw is None or raw == "":
  7. return default
  8. return int(raw)
  9. @dataclass(frozen=True)
  10. class Settings:
  11. max_upload_mb: int = _get_int("DOC2MD_MAX_UPLOAD_MB", 100)
  12. max_response_mb: int = _get_int("DOC2MD_MAX_RESPONSE_MB", 30)
  13. request_timeout_seconds: int = _get_int("DOC2MD_REQUEST_TIMEOUT_SECONDS", 300)
  14. office_timeout_seconds: int = _get_int("DOC2MD_OFFICE_TIMEOUT_SECONDS", 180)
  15. max_workers: int = _get_int("DOC2MD_MAX_WORKERS", 4)
  16. max_queue_size: int = _get_int("DOC2MD_MAX_QUEUE_SIZE", 8)
  17. chunk_size_bytes: int = _get_int("DOC2MD_CHUNK_SIZE_BYTES", 1048576)
  18. @property
  19. def max_upload_bytes(self) -> int:
  20. return self.max_upload_mb * 1024 * 1024
  21. @property
  22. def max_response_bytes(self) -> int:
  23. return self.max_response_mb * 1024 * 1024
  24. @property
  25. def max_pending_tasks(self) -> int:
  26. return self.max_workers + self.max_queue_size
  27. settings = Settings()