import os import signal import subprocess from pathlib import Path from .config import log, non_prefixed_settings, settings if source_ref := os.getenv("IMMICH_SOURCE_REF"): log.info(f"Initializing Immich ML [{source_ref}]") else: log.info("Initializing Immich ML") module_dir = Path(__file__).parent try: with subprocess.Popen( [ "python", "-m", "gunicorn", "immich_ml.main:app", "-k", "immich_ml.config.CustomUvicornWorker", "-c", module_dir / "gunicorn_conf.py", "-b", f"{non_prefixed_settings.immich_host}:{non_prefixed_settings.immich_port}", "-w", str(settings.workers), "-t", str(settings.worker_timeout), "--log-config-json", module_dir / "log_conf.json", "--keep-alive", str(settings.http_keepalive_timeout_s), "--graceful-timeout", "10", ], ) as cmd: cmd.wait() except KeyboardInterrupt: cmd.send_signal(signal.SIGINT) exit(cmd.returncode)