mirror of
https://github.com/gradio-app/gradio.git
synced 2025-03-07 11:46:51 +08:00
revamped how we close servers
This commit is contained in:
parent
c927b778fd
commit
d03c3a4bfe
@ -588,6 +588,7 @@ class Interface:
|
|||||||
self.auth = auth
|
self.auth = auth
|
||||||
self.auth_message = auth_message
|
self.auth_message = auth_message
|
||||||
self.show_tips = show_tips
|
self.show_tips = show_tips
|
||||||
|
self.show_error = show_error
|
||||||
|
|
||||||
# Request key for encryption
|
# Request key for encryption
|
||||||
if self.encrypt:
|
if self.encrypt:
|
||||||
@ -599,13 +600,14 @@ class Interface:
|
|||||||
self.enable_queue = enable_queue
|
self.enable_queue = enable_queue
|
||||||
|
|
||||||
# Launch local flask server
|
# Launch local flask server
|
||||||
server_port, path_to_local_server, app, thread = networking.start_server(
|
server_port, path_to_local_server, app, thread, server = networking.start_server(
|
||||||
self, server_name, server_port, self.auth)
|
self, server_name, server_port, self.auth)
|
||||||
self.local_url = path_to_local_server
|
self.local_url = path_to_local_server
|
||||||
self.server_port = server_port
|
self.server_port = server_port
|
||||||
self.status = "RUNNING"
|
self.status = "RUNNING"
|
||||||
self.server = app
|
self.server = server
|
||||||
self.show_error = show_error
|
self.server_app = app
|
||||||
|
self.server_thread = thread
|
||||||
|
|
||||||
# Count number of launches
|
# Count number of launches
|
||||||
utils.launch_counter()
|
utils.launch_counter()
|
||||||
@ -705,18 +707,13 @@ class Interface:
|
|||||||
Closes the Interface that was launched. This will close the server and free the port.
|
Closes the Interface that was launched. This will close the server and free the port.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
if self.share_url:
|
self.server.shutdown()
|
||||||
requests.get("{}/shutdown".format(self.share_url))
|
self.server_thread.join()
|
||||||
if verbose:
|
print("Closing server running on port: {}".format(self.server_port))
|
||||||
print("Closing Gradio server on port {}...".format(self.server_port))
|
except AttributeError: # can't close if not running
|
||||||
elif self.local_url:
|
pass
|
||||||
requests.get("{}shutdown".format(self.local_url))
|
except OSError: # sometimes OSError is thrown when shutting down
|
||||||
if verbose:
|
pass
|
||||||
print("Closing Gradio server on port {}...".format(self.server_port))
|
|
||||||
else:
|
|
||||||
pass # server not running
|
|
||||||
except (requests.ConnectionError, ConnectionResetError):
|
|
||||||
pass # server is already closed
|
|
||||||
|
|
||||||
def integrate(self, comet_ml=None, wandb=None, mlflow=None):
|
def integrate(self, comet_ml=None, wandb=None, mlflow=None):
|
||||||
"""
|
"""
|
||||||
|
@ -2,33 +2,31 @@
|
|||||||
Defines helper methods useful for setting up ports, launching servers, and handling `ngrok`
|
Defines helper methods useful for setting up ports, launching servers, and handling `ngrok`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import csv
|
||||||
import socket
|
import datetime
|
||||||
import threading
|
|
||||||
from flask import Flask, request, session, jsonify, abort, send_file, render_template, redirect
|
from flask import Flask, request, session, jsonify, abort, send_file, render_template, redirect
|
||||||
from flask_cachebuster import CacheBuster
|
from flask_cachebuster import CacheBuster
|
||||||
from flask_login import LoginManager, login_user, current_user, login_required
|
from flask_login import LoginManager, login_user, current_user, login_required
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
import threading
|
from functools import wraps
|
||||||
import pkg_resources
|
import inspect
|
||||||
import datetime
|
import io
|
||||||
import time
|
|
||||||
import json
|
import json
|
||||||
import urllib.request
|
|
||||||
from shutil import copyfile
|
|
||||||
import requests
|
|
||||||
import sys
|
|
||||||
import csv
|
|
||||||
import logging
|
import logging
|
||||||
from gradio.tunneling import create_tunnel
|
import os
|
||||||
|
import pkg_resources
|
||||||
|
import requests
|
||||||
|
import socket
|
||||||
|
import sys
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
import traceback
|
||||||
|
import urllib.request
|
||||||
|
from werkzeug.security import safe_join
|
||||||
|
from werkzeug.serving import make_server
|
||||||
from gradio import encryptor
|
from gradio import encryptor
|
||||||
from gradio import queue
|
from gradio import queue
|
||||||
from functools import wraps
|
from gradio.tunneling import create_tunnel
|
||||||
import io
|
|
||||||
import inspect
|
|
||||||
import traceback
|
|
||||||
from werkzeug.security import safe_join
|
|
||||||
|
|
||||||
|
|
||||||
# By default, the http server will try to open on port 7860. If not available, 7861, 7862, etc.
|
# By default, the http server will try to open on port 7860. If not available, 7861, 7862, etc.
|
||||||
INITIAL_PORT_VALUE = int(os.getenv('GRADIO_SERVER_PORT', "7860"))
|
INITIAL_PORT_VALUE = int(os.getenv('GRADIO_SERVER_PORT', "7860"))
|
||||||
@ -464,24 +462,13 @@ def start_server(interface, server_name=None, server_port=None, auth=None, ssl=N
|
|||||||
app.queue_thread.start()
|
app.queue_thread.start()
|
||||||
if interface.save_to is not None:
|
if interface.save_to is not None:
|
||||||
interface.save_to["port"] = port
|
interface.save_to["port"] = port
|
||||||
# app_kwargs = {"port": port, "host": server_name}
|
|
||||||
# if ssl:
|
|
||||||
# app_kwargs["ssl_context"] = ssl
|
|
||||||
# thread = threading.Thread(target=app.run,
|
|
||||||
# kwargs=app_kwargs,
|
|
||||||
# daemon=True)
|
|
||||||
# thread.start()
|
|
||||||
|
|
||||||
app_kwargs = {"app": app, "port": port, "host": server_name}
|
app_kwargs = {"app": app, "port": port, "host": server_name}
|
||||||
if ssl:
|
if ssl:
|
||||||
app_kwargs["ssl_context"] = ssl
|
app_kwargs["ssl_context"] = ssl
|
||||||
server = make_server(**app_kwargs)
|
server = make_server(**app_kwargs)
|
||||||
def run_forever():
|
thread = threading.Thread(target=server.serve_forever, daemon=True)
|
||||||
server.serve_forever()
|
|
||||||
thread = threading.Thread(target=run_forever, daemon=True)
|
|
||||||
thread.start()
|
thread.start()
|
||||||
return port, path_to_local_server, app, thread, server
|
return port, path_to_local_server, app, thread, server
|
||||||
# return port, path_to_local_server, app, thread
|
|
||||||
|
|
||||||
def get_state():
|
def get_state():
|
||||||
return session.get("state")
|
return session.get("state")
|
||||||
|
Loading…
Reference in New Issue
Block a user