mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
cli: use wsgiref w/ threading by default to support proxy mode
waitress still available with --server=waitress flag
This commit is contained in:
parent
191ebe1132
commit
0fd3d39ab8
@ -32,6 +32,7 @@ class BaseCli(object):
|
||||
parser = ArgumentParser(desc)
|
||||
parser.add_argument('-p', '--port', type=int, default=default_port)
|
||||
parser.add_argument('-t', '--threads', type=int, default=4)
|
||||
parser.add_argument('-s', '--server')
|
||||
|
||||
self.desc = desc
|
||||
|
||||
@ -48,14 +49,19 @@ class BaseCli(object):
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
from waitress import serve
|
||||
print(self.desc)
|
||||
serve(self.application, port=self.r.port, threads=self.r.threads)
|
||||
except ImportError: # pragma: no cover
|
||||
# Shouldn't ever happen as installing waitress, but just in case..
|
||||
from pywb.framework.wsgi_wrappers import start_wsgi_ref_server
|
||||
start_wsgi_ref_server(self.application, self.desc, port=self.r.port)
|
||||
if self.r.server == 'waitress':
|
||||
self.run_waitress()
|
||||
else:
|
||||
self.run_wsgiref()
|
||||
|
||||
def run_waitress(self):
|
||||
from waitress import serve
|
||||
print(self.desc)
|
||||
serve(self.application, port=self.r.port, threads=self.r.threads)
|
||||
|
||||
def run_wsgiref(self): #pragma: no cover
|
||||
from pywb.framework.wsgi_wrappers import start_wsgi_ref_server
|
||||
start_wsgi_ref_server(self.application, self.desc, port=self.r.port)
|
||||
|
||||
|
||||
#=============================================================================
|
||||
|
@ -161,7 +161,8 @@ def init_app(init_func, load_yaml=True, config_file=None, config=None):
|
||||
|
||||
#=================================================================
|
||||
def start_wsgi_ref_server(the_app, name, port): # pragma: no cover
|
||||
from wsgiref.simple_server import make_server
|
||||
from wsgiref.simple_server import make_server, WSGIServer
|
||||
from SocketServer import ThreadingMixIn
|
||||
|
||||
# disable is_hop_by_hop restrictions
|
||||
import wsgiref.handlers
|
||||
@ -172,8 +173,11 @@ def start_wsgi_ref_server(the_app, name, port): # pragma: no cover
|
||||
|
||||
logging.info('Starting %s on port %s', name, port)
|
||||
|
||||
class ThreadingWSGIServer(ThreadingMixIn, WSGIServer):
|
||||
pass
|
||||
|
||||
try:
|
||||
httpd = make_server('', port, the_app)
|
||||
httpd = make_server('', port, the_app, ThreadingWSGIServer)
|
||||
httpd.serve_forever()
|
||||
except KeyboardInterrupt as ex:
|
||||
pass
|
||||
|
Loading…
x
Reference in New Issue
Block a user