diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2014-01-30 17:23:52 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2014-01-30 17:23:52 +0000 |
commit | 1f20790defb64755c1e87e3c0e75f1edf4313eb7 (patch) | |
tree | b0639ada5dda99b3212687abc8f8a4803920c522 | |
parent | 2691364384c1ea1871ed2aa5925937ac133660ad (diff) | |
download | lorry-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-x | lorry-controller-webapp | 76 |
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() |