59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
"""
|
|
Server configuration for Brace Generator API.
|
|
"""
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
class Config:
|
|
"""Server configuration loaded from environment variables."""
|
|
|
|
# Server settings (DEV uses port 8001)
|
|
HOST: str = os.getenv("HOST", "0.0.0.0")
|
|
PORT: int = int(os.getenv("PORT", "8001"))
|
|
DEBUG: bool = os.getenv("DEBUG", "true").lower() == "true"
|
|
|
|
# Model settings
|
|
DEVICE: str = os.getenv("DEVICE", "cuda") # 'cuda' or 'cpu'
|
|
MODEL: str = os.getenv("MODEL", "scoliovis") # 'scoliovis' or 'vertebra-landmark'
|
|
|
|
# Paths
|
|
BASE_DIR: Path = Path(__file__).parent.parent
|
|
TEMPLATES_DIR: Path = BASE_DIR / "rigoBrace(2)"
|
|
WEIGHTS_DIR: Path = BASE_DIR.parent / "scoliovis-api" / "models"
|
|
|
|
# TEMP_DIR: Use system temp on Windows, /tmp on Linux
|
|
@staticmethod
|
|
def _get_temp_dir() -> Path:
|
|
env_temp = os.getenv("TEMP_DIR")
|
|
if env_temp:
|
|
return Path(env_temp)
|
|
# Use system temp directory (works on both Windows and Linux)
|
|
import tempfile
|
|
return Path(tempfile.gettempdir()) / "brace_generator"
|
|
|
|
TEMP_DIR: Path = _get_temp_dir()
|
|
|
|
# CORS
|
|
CORS_ORIGINS: list = os.getenv("CORS_ORIGINS", "*").split(",")
|
|
|
|
# Request limits
|
|
MAX_IMAGE_SIZE_MB: int = int(os.getenv("MAX_IMAGE_SIZE_MB", "50"))
|
|
REQUEST_TIMEOUT_SECONDS: int = int(os.getenv("REQUEST_TIMEOUT_SECONDS", "120"))
|
|
|
|
@classmethod
|
|
def ensure_dirs(cls):
|
|
"""Create necessary directories."""
|
|
cls.TEMP_DIR.mkdir(parents=True, exist_ok=True)
|
|
|
|
@classmethod
|
|
def get_device(cls) -> str:
|
|
"""Get device, falling back to CPU if CUDA unavailable."""
|
|
import torch
|
|
if cls.DEVICE == "cuda" and torch.cuda.is_available():
|
|
return "cuda"
|
|
return "cpu"
|
|
|
|
|
|
config = Config()
|