mirror of
https://github.com/gradio-app/gradio.git
synced 2025-02-23 11:39:17 +08:00
allows you to fix port; deprecates server_port, server_name parameters in Interface()
This commit is contained in:
parent
8d23f067a2
commit
9d54d13d54
@ -63,9 +63,8 @@ class Interface:
|
||||
examples_per_page=10, live=False, layout="unaligned", show_input=True, show_output=True,
|
||||
capture_session=None, interpretation=None, num_shap=2.0, theme=None, repeat_outputs_per_model=True,
|
||||
title=None, description=None, article=None, thumbnail=None,
|
||||
css=None, server_port=None, server_name=None, height=500, width=900,
|
||||
allow_screenshot=True, allow_flagging=None, flagging_options=None, encrypt=False,
|
||||
show_tips=None, flagging_dir="flagged", analytics_enabled=None, enable_queue=None, api_mode=None):
|
||||
css=None, height=500, width=900, allow_screenshot=True, allow_flagging=None, flagging_options=None,
|
||||
encrypt=False, show_tips=None, flagging_dir="flagged", analytics_enabled=None, enable_queue=None, api_mode=None):
|
||||
"""
|
||||
Parameters:
|
||||
fn (Callable): the function to wrap an interface around.
|
||||
@ -162,12 +161,7 @@ class Interface:
|
||||
"Examples argument must either be a directory or a nested list, where each sublist represents a set of inputs.")
|
||||
self.num_shap = num_shap
|
||||
self.examples_per_page = examples_per_page
|
||||
|
||||
self.server_name = server_name
|
||||
self.server_port = server_port
|
||||
if server_name is not None or server_port is not None:
|
||||
warnings.warn("The server_name and server_port parameters in the `Interface` class will be deprecated. Please provide them in the `launch()` method instead.")
|
||||
|
||||
|
||||
self.simple_server = None
|
||||
self.allow_screenshot = allow_screenshot
|
||||
# For allow_flagging and analytics_enabled: (1) first check for parameter, (2) check for environment variable, (3) default to True
|
||||
@ -573,7 +567,6 @@ class Interface:
|
||||
path_to_local_server (str): Locally accessible link
|
||||
share_url (str): Publicly accessible link (if share=True)
|
||||
"""
|
||||
|
||||
# Set up local flask server
|
||||
config = self.get_config_file()
|
||||
self.config = config
|
||||
@ -589,8 +582,8 @@ class Interface:
|
||||
getpass.getpass("Enter key for encryption: "))
|
||||
|
||||
# Store parameters
|
||||
server_name = server_name or self.server_name or networking.LOCALHOST_NAME
|
||||
server_port = server_port or self.server_port or networking.INITIAL_PORT_VALUE
|
||||
server_name = server_name or networking.LOCALHOST_NAME
|
||||
server_port = server_port
|
||||
if self.enable_queue is None:
|
||||
self.enable_queue = enable_queue
|
||||
|
||||
@ -696,17 +689,19 @@ class Interface:
|
||||
|
||||
return app, path_to_local_server, share_url
|
||||
|
||||
def close(self):
|
||||
def close(self, verbose=True):
|
||||
"""
|
||||
Closes the Interface that was launched. This will close the server and free the port.
|
||||
"""
|
||||
try:
|
||||
if self.share_url:
|
||||
requests.get("{}/shutdown".format(self.share_url))
|
||||
print("Closing Gradio server on port {}...".format(self.server_port))
|
||||
if verbose:
|
||||
print("Closing Gradio server on port {}...".format(self.server_port))
|
||||
elif self.local_url:
|
||||
requests.get("{}shutdown".format(self.local_url))
|
||||
print("Closing Gradio server on port {}...".format(self.server_port))
|
||||
if verbose:
|
||||
print("Closing Gradio server on port {}...".format(self.server_port))
|
||||
else:
|
||||
pass # server not running
|
||||
except (requests.ConnectionError, ConnectionResetError):
|
||||
@ -751,9 +746,9 @@ class Interface:
|
||||
utils.integration_analytics(data)
|
||||
|
||||
|
||||
def close_all():
|
||||
def close_all(verbose=True):
|
||||
for io in Interface.get_instances():
|
||||
io.close()
|
||||
io.close(verbose)
|
||||
|
||||
|
||||
def reset_all():
|
||||
|
@ -32,7 +32,7 @@ from werkzeug.security import safe_join
|
||||
INITIAL_PORT_VALUE = int(os.getenv(
|
||||
'GRADIO_SERVER_PORT', "7860")) # The http server will try to open on port 7860. If not available, 7861, 7862, etc.
|
||||
TRY_NUM_PORTS = int(os.getenv(
|
||||
'GRADIO_NUM_PORTS', "100")) # Number of ports to try before giving up and throwing an exception.
|
||||
'GRADIO_NUM_PORTS', "1000")) # Number of ports to try before giving up and throwing an exception.
|
||||
LOCALHOST_NAME = os.getenv(
|
||||
'GRADIO_SERVER_NAME', "127.0.0.1")
|
||||
GRADIO_API_SERVER = "https://api.gradio.app/v1/tunnel-request"
|
||||
@ -426,10 +426,20 @@ def queue_thread(path_to_local_server, test_mode=False):
|
||||
break
|
||||
|
||||
|
||||
def start_server(interface, server_name, server_port, auth=None, ssl=None):
|
||||
port = get_first_available_port(
|
||||
server_port, server_port + TRY_NUM_PORTS
|
||||
)
|
||||
def start_server(interface, server_name, server_port=None, auth=None, ssl=None):
|
||||
if server_port is None: # if port is not specified, start at 7860 and search for first available port
|
||||
port = get_first_available_port(
|
||||
INITIAL_PORT_VALUE, INITIAL_PORT_VALUE + TRY_NUM_PORTS
|
||||
)
|
||||
else:
|
||||
try:
|
||||
s = socket.socket() # create a socket object
|
||||
s.bind((LOCALHOST_NAME, server_port)) # Bind to the port to see if it's available (otherwise, raise OSError)
|
||||
s.close()
|
||||
except OSError:
|
||||
raise OSError("Port {} is in use. If a gradio.Interface is running on the port, you can close() it or gradio.close_all().".format(server_port))
|
||||
port = server_port
|
||||
|
||||
url_host_name = "localhost" if server_name == "0.0.0.0" else server_name
|
||||
path_to_local_server = "http://{}:{}/".format(url_host_name, port)
|
||||
if auth is not None:
|
||||
|
@ -199,7 +199,6 @@ class TestState(unittest.TestCase):
|
||||
|
||||
def test_state_value(self):
|
||||
io = gr.Interface(lambda x: len(x), "text", "label")
|
||||
io.launch(prevent_thread_lock=True)
|
||||
app, _, _ = io.launch(prevent_thread_lock=True)
|
||||
with app.test_request_context():
|
||||
networking.set_state("test")
|
||||
|
Loading…
Reference in New Issue
Block a user