# Gunicorn configuration file for production

import multiprocessing

# Server socket
bind = "0.0.0.0:8000"
backlog = 2048

# Worker processes
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "sync"
worker_connections = 1000
timeout = 120
keepalive = 5

# Process naming
proc_name = "business_platform"

# Server mechanics
daemon = False
pidfile = None
umask = 0
user = None
group = None
tmp_upload_dir = None

# Logging
errorlog = "-"
loglevel = "info"
accesslog = "-"
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

# Process lifecycle
max_requests = 1000
max_requests_jitter = 50
graceful_timeout = 30

# Security
limit_request_line = 4094
limit_request_fields = 100
limit_request_field_size = 8190

# Forwarded allow ips (for nginx proxy)
forwarded_allow_ips = "*"

# Hooks
def on_starting(server):
    print("Gunicorn server is starting...")

def on_exit(server):
    print("Gunicorn server is shutting down...")

def worker_int(worker):
    print(f"Worker {worker.pid} received INT or QUIT signal")
