From 128a793265c1e43da66e3b3382bda9327c03fd52 Mon Sep 17 00:00:00 2001 From: layerdiffusion <19834515+lllyasviel@users.noreply.github.com> Date: Sun, 18 Aug 2024 03:57:25 -0700 Subject: [PATCH] gradio --- modules_forge/forge_space.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/modules_forge/forge_space.py b/modules_forge/forge_space.py index af86f184..44e4973f 100644 --- a/modules_forge/forge_space.py +++ b/modules_forge/forge_space.py @@ -2,6 +2,7 @@ import os import sys import uuid import time +import socket import gradio as gr import importlib.util import shutil @@ -25,6 +26,24 @@ def build_html(title, installed=False, url=None): return f'
{title}
Installed, Ready to Launch
' +def find_free_port(server_name, start_port=None): + port = start_port + + if port is None: + port = 7860 + + if server_name is None: + server_name = '127.0.0.1' + + while True: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + try: + s.bind((server_name, port)) + return port + except OSError: + port += 1 + + class ForgeSpace: def __init__(self, root_path, title, repo_id=None, repo_type='space', revision=None, **kwargs): self.title = title @@ -119,7 +138,18 @@ class ForgeSpace: spec.loader.exec_module(module) demo = getattr(module, 'demo') - self.gradio_metas = demo.launch(inbrowser=True, prevent_thread_lock=True) + from modules import initialize_util + from modules.shared import cmd_opts + + server_name = initialize_util.gradio_server_name() + port = find_free_port(server_name=server_name, start_port=cmd_opts.port) + + self.gradio_metas = demo.launch( + inbrowser=True, + prevent_thread_lock=True, + server_name=server_name, + server_port=port + ) while self.is_running: time.sleep(0.1)