diff --git a/gradio/interface.py b/gradio/interface.py index 8e8c162197..542927a096 100644 --- a/gradio/interface.py +++ b/gradio/interface.py @@ -40,7 +40,7 @@ class Interface: def __init__(self, fn, inputs, outputs, saliency=None, verbose=False, examples=None, live=False, show_input=True, show_output=True, capture_session=False, title=None, description=None, - thumbnail=None, server_name=networking.LOCALHOST_NAME): + thumbnail=None, server_port=None, server_name=networking.LOCALHOST_NAME): """ Parameters: fn (Callable): the function to wrap an interface around. @@ -97,7 +97,7 @@ class Interface: self.description = description self.thumbnail = thumbnail self.examples = examples - self.server_port = None + self.server_port = server_port self.simple_server = None Interface.instances.add(self) @@ -270,7 +270,8 @@ class Interface: output_directory = tempfile.mkdtemp() # Set up a port to serve the directory containing the static files with interface. - server_port, httpd = networking.start_simple_server(self, output_directory, self.server_name) + server_port, httpd = networking.start_simple_server(self, output_directory, self.server_name, + server_port=self.server_port) path_to_local_server = "http://{}:{}/".format(self.server_name, server_port) networking.build_template(output_directory) diff --git a/gradio/networking.py b/gradio/networking.py index a7b366b76c..c4a39bef46 100644 --- a/gradio/networking.py +++ b/gradio/networking.py @@ -18,13 +18,12 @@ import sys import analytics -INITIAL_PORT_VALUE = ( - 7860 -) # The http server will try to open on port 7860. If not available, 7861, 7862, etc. -TRY_NUM_PORTS = ( - 100 -) # Number of ports to try before giving up and throwing an exception. -LOCALHOST_NAME = os.getenv('GRADIO_SERVER_NAME', "127.0.0.1") +INITIAL_PORT_VALUE = 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 = os.getenv( + 'GRADIO_NUM_PORTS', "100") # 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" STATIC_TEMPLATE_LIB = pkg_resources.resource_filename("gradio", "templates/") @@ -231,9 +230,11 @@ def serve_files_in_background(interface, port, directory_to_serve=None, server_n return httpd -def start_simple_server(interface, directory_to_serve=None, server_name=None): +def start_simple_server(interface, directory_to_serve=None, server_name=None, server_port=None): + if server_port is None: + server_port = INITIAL_PORT_VALUE port = get_first_available_port( - INITIAL_PORT_VALUE, INITIAL_PORT_VALUE + TRY_NUM_PORTS + server_port, server_port + TRY_NUM_PORTS ) httpd = serve_files_in_background(interface, port, directory_to_serve, server_name) return port, httpd