summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2014-01-30 17:23:52 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2014-01-30 17:23:52 +0000
commit1f20790defb64755c1e87e3c0e75f1edf4313eb7 (patch)
treeb0639ada5dda99b3212687abc8f8a4803920c522
parent2691364384c1ea1871ed2aa5925937ac133660ad (diff)
downloadlorry-controller-1f20790defb64755c1e87e3c0e75f1edf4313eb7.tar.gz
Re-instate --debug-port
Running lorry-controller-webapp manually, to test it with a web browser, is easier when the port doesn't change, so --debug-port is useful.
-rwxr-xr-xlorry-controller-webapp76
1 files changed, 52 insertions, 24 deletions
diff --git a/lorry-controller-webapp b/lorry-controller-webapp
index 27c6375..7d06897 100755
--- a/lorry-controller-webapp
+++ b/lorry-controller-webapp
@@ -172,6 +172,14 @@ class WEBAPP(cliapp.Application):
['wsgi'],
'run in wsgi mode (default is debug mode, for development)')
+ self.settings.integer(
+ ['debug-port'],
+ 'use PORT in debugging mode '
+ '(i.e., when not running under WSGI); '
+ 'note that using this to non-zero disables --debug-port-file',
+ metavar='PORT',
+ default=0)
+
self.settings.string(
['debug-port-file'],
'write listening port to FILE when in debug mode '
@@ -221,31 +229,51 @@ class WEBAPP(cliapp.Application):
logging.info('Starting server')
if self.settings['wsgi']:
- WSGIServer(webapp).run()
+ self.run_wsgi_server(webapp)
else:
- server_port_file = self.settings['debug-port-file']
- class DebugServer(wsgiref.simple_server.WSGIServer):
- '''WSGI-like server that uses an ephemeral port.
-
- Rather than use a specified port, or default, the
- DebugServer connects to an ephemeral port and writes
- its number to debug-port-file, so a non-racy temporary
- port can be used.
-
- '''
-
- def __init__(self, (host, port), *args, **kwargs):
- wsgiref.simple_server.WSGIServer.__init__(
- self, (host, 0), *args, **kwargs)
- with open(server_port_file, 'w') as f:
- f.write(str(self.server_port) + '\n')
-
- bottle.run(
- webapp,
- host=self.settings['debug-host'],
- server_class=DebugServer,
- quiet=True,
- debug=True)
+ self.run_debug_server(webapp)
+
+ def run_wsgi_server(self, webapp):
+ WSGIServer(webapp).run()
+ def run_debug_server(self, webapp):
+ if self.settings['debug-port']:
+ self.run_debug_server_on_given_port(webapp)
+ else:
+ self.run_debug_server_on_random_port(webapp)
+
+ def run_debug_server_on_given_port(self, webapp):
+ bottle.run(
+ webapp,
+ host=self.settings['debug-host'],
+ port=self.settings['debug-port'],
+ quiet=True,
+ debug=True)
+
+ def run_debug_server_on_random_port(self, webapp):
+ server_port_file = self.settings['debug-port-file']
+
+ class DebugServer(wsgiref.simple_server.WSGIServer):
+ '''WSGI-like server that uses an ephemeral port.
+
+ Rather than use a specified port, or default, the
+ DebugServer connects to an ephemeral port and writes
+ its number to debug-port-file, so a non-racy temporary
+ port can be used.
+
+ '''
+
+ def __init__(self, (host, port), *args, **kwargs):
+ wsgiref.simple_server.WSGIServer.__init__(
+ self, (host, 0), *args, **kwargs)
+ with open(server_port_file, 'w') as f:
+ f.write(str(self.server_port) + '\n')
+
+ bottle.run(
+ webapp,
+ host=self.settings['debug-host'],
+ server_class=DebugServer,
+ quiet=True,
+ debug=True)
WEBAPP().run()