Add preflight port check before loading startup tasks

This commit is contained in:
seungwoo-ji-03 2025-12-14 19:07:42 +09:00
parent 5ac3b26a7d
commit f31996831e

29
main.py
View File

@ -5,6 +5,7 @@ import os
import importlib.util import importlib.util
import folder_paths import folder_paths
import time import time
import socket
from comfy.cli_args import args from comfy.cli_args import args
from app.logger import setup_logger from app.logger import setup_logger
import itertools import itertools
@ -30,6 +31,31 @@ def handle_comfyui_manager_unavailable():
args.enable_manager = False args.enable_manager = False
def ensure_ports_available(listen_addresses, port):
for raw_addr in listen_addresses.split(","):
addr = raw_addr.strip()
if addr == "":
addr = "0.0.0.0"
try:
addrinfo = socket.getaddrinfo(addr, port, type=socket.SOCK_STREAM)
except socket.gaierror as exc:
logging.error(f"Invalid listen address '{raw_addr}': {exc}")
raise SystemExit(1)
last_error = None
for family, socktype, proto, _, sockaddr in addrinfo:
try:
with socket.socket(family, socktype, proto) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(sockaddr)
break
except OSError as exc:
last_error = exc
else:
logging.error(f"Port {port} unavailable for address '{addr}': {last_error}")
raise SystemExit(1)
if args.enable_manager: if args.enable_manager:
if importlib.util.find_spec("comfyui_manager"): if importlib.util.find_spec("comfyui_manager"):
import comfyui_manager import comfyui_manager
@ -40,6 +66,9 @@ if args.enable_manager:
handle_comfyui_manager_unavailable() handle_comfyui_manager_unavailable()
ensure_ports_available(args.listen, args.port)
def apply_custom_paths(): def apply_custom_paths():
# extra model paths # extra model paths
extra_model_paths_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "extra_model_paths.yaml") extra_model_paths_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "extra_model_paths.yaml")