"""Configuration Gunicorn pour l'application Flask."""

import multiprocessing
import os

# Répertoire de base de l'application
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

# Nom de l'application WSGI
wsgi_app = "app:app"

# Interface et port d'écoute (Gunicorn écoute en localhost, Apache fait le reverse proxy)
bind = "127.0.0.1:8000"

# Nombre de workers (formule recommandée: (2 x CPU cores) + 1)
workers = multiprocessing.cpu_count() * 2 + 1

# Type de worker (sync par défaut, mais gevent ou eventlet pour plus de performance si besoin)
worker_class = "sync"

# Timeout pour les workers (en secondes)
timeout = 120

# Nombre de connexions simultanées par worker
worker_connections = 1000

# Redémarrage des workers après ce nombre de requêtes (aide à prévenir les fuites mémoire)
max_requests = 1000
max_requests_jitter = 50

# Répertoire de travail
chdir = BASE_DIR

# Utilisateur et groupe pour exécuter l'application (à ajuster selon votre configuration)
# user = "www-data"
# group = "www-data"

# Fichiers de logs
accesslog = os.path.join(BASE_DIR, "logs", "gunicorn_access.log")
errorlog = os.path.join(BASE_DIR, "logs", "gunicorn_error.log")
loglevel = "info"

# Précharger l'application pour améliorer les performances
preload_app = True

# Garder l'application en vie lors du redémarrage des workers
keepalive = 2

# PID file (pour arrêter/démarrer facilement)
# Utiliser RuntimeDirectory de systemd (accessible même avec PrivateTmp)
# Le répertoire est créé automatiquement par systemd via RuntimeDirectory
pid_dir = "/run/ayatfadhila"
pidfile = os.path.join(pid_dir, "gunicorn.pid")

# Mode démon (True pour lancer en arrière-plan, False si géré par systemd)
daemon = False
