mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +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 = ArgumentParser(desc)
|
||||||
parser.add_argument('-p', '--port', type=int, default=default_port)
|
parser.add_argument('-p', '--port', type=int, default=default_port)
|
||||||
parser.add_argument('-t', '--threads', type=int, default=4)
|
parser.add_argument('-t', '--threads', type=int, default=4)
|
||||||
|
parser.add_argument('-s', '--server')
|
||||||
|
|
||||||
self.desc = desc
|
self.desc = desc
|
||||||
|
|
||||||
@ -48,14 +49,19 @@ class BaseCli(object):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
try:
|
if self.r.server == 'waitress':
|
||||||
from waitress import serve
|
self.run_waitress()
|
||||||
print(self.desc)
|
else:
|
||||||
serve(self.application, port=self.r.port, threads=self.r.threads)
|
self.run_wsgiref()
|
||||||
except ImportError: # pragma: no cover
|
|
||||||
# Shouldn't ever happen as installing waitress, but just in case..
|
def run_waitress(self):
|
||||||
from pywb.framework.wsgi_wrappers import start_wsgi_ref_server
|
from waitress import serve
|
||||||
start_wsgi_ref_server(self.application, self.desc, port=self.r.port)
|
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
|
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
|
# disable is_hop_by_hop restrictions
|
||||||
import wsgiref.handlers
|
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)
|
logging.info('Starting %s on port %s', name, port)
|
||||||
|
|
||||||
|
class ThreadingWSGIServer(ThreadingMixIn, WSGIServer):
|
||||||
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
httpd = make_server('', port, the_app)
|
httpd = make_server('', port, the_app, ThreadingWSGIServer)
|
||||||
httpd.serve_forever()
|
httpd.serve_forever()
|
||||||
except KeyboardInterrupt as ex:
|
except KeyboardInterrupt as ex:
|
||||||
pass
|
pass
|
||||||
|
Loading…
x
Reference in New Issue
Block a user