browse.py: fix delay with multiple connections

When Firefox opens two TCP connections and sends a request over the
second connection, it is not processed until the first one is closed.
Use a threaded server to solve this issue. Tested with Python 2.7.15 and
3.6.5. (Also tested with 2.6, but that failed due to lack of argparse.)

Link: https://bugs.python.org/issue31639
This commit is contained in:
Peter Wu 2018-05-18 14:21:59 +02:00
parent fccab7408a
commit 6e30a04bbe

View File

@ -24,8 +24,10 @@ from __future__ import print_function
try: try:
import http.server as httpserver import http.server as httpserver
import socketserver
except ImportError: except ImportError:
import BaseHTTPServer as httpserver import BaseHTTPServer as httpserver
import SocketServer as socketserver
import argparse import argparse
import cgi import cgi
import os import os
@ -205,10 +207,14 @@ parser.add_argument('-f', default='build.ninja',
parser.add_argument('initial_target', default='all', nargs='?', parser.add_argument('initial_target', default='all', nargs='?',
help='Initial target to show (default %(default)s)') help='Initial target to show (default %(default)s)')
class HTTPServer(socketserver.ThreadingMixIn, httpserver.HTTPServer):
# terminate server immediately when Python exits.
daemon_threads = True
args = parser.parse_args() args = parser.parse_args()
port = args.port port = args.port
hostname = args.hostname hostname = args.hostname
httpd = httpserver.HTTPServer((hostname,port), RequestHandler) httpd = HTTPServer((hostname,port), RequestHandler)
try: try:
if hostname == "": if hostname == "":
hostname = socket.gethostname() hostname = socket.gethostname()