Merge pull request #30 from gradio-app/abidlabs/configurable-ports

Abidlabs/configurable ports
This commit is contained in:
aliabid94 2020-07-18 11:12:57 -07:00 committed by GitHub
commit 286f107b1b
2 changed files with 14 additions and 12 deletions

View File

@ -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)

View File

@ -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