import os

from src.config.settings import settings_instance

# -------------------
# Worker / Performance Settings
# -------------------
workers = settings_instance.WORKERS
worker_class = "uvicorn.workers.UvicornWorker"
worker_connections = 2000
threads = 2
timeout = 120
keepalive = 5
preload_app = True
max_requests = 1000
max_requests_jitter = 100

# -------------------
# Bind / Port
# -------------------
bind = f"{settings_instance.PROJECT_URL}:{settings_instance.PROJECT_PORT}"
env_port = os.environ.get("GUNICORN_PORT")
if env_port:
    bind = f"{settings_instance.PROJECT_URL}:{env_port}"

# -------------------
# Logs to terminal
# -------------------
loglevel = "info"
capture_output = True
enable_stdio_inheritance = True

# Print access logs to terminal
accesslog = "-"  # "-" means stdout
errorlog = "-"  # "-" means stderr
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

# -------------------
# Reload option for development
# -------------------
reload_env = os.environ.get("GUNICORN_RELOAD", "false").lower()
reload = reload_env in ("1", "true", "yes", "y", "on")
