From 569f8a080ec1ba55ed36a49d607bea560fad53f8 Mon Sep 17 00:00:00 2001 From: Justin Mayer Date: Fri, 17 Jan 2020 15:11:42 +0100 Subject: [PATCH 1/2] Tell users they can use CTRL-C to stop web server This knowledge was heretofore assumed but is better made explicit. --- pelican/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pelican/__init__.py b/pelican/__init__.py index 17f4f922..e040ca4d 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -466,8 +466,9 @@ def listen(server, port, output, excqueue=None): excqueue.put(traceback.format_exception_only(type(e), e)[-1]) return - logging.info("Serving at port %s, server %s.", port, server) try: + print("\nServing site at: {}:{} - Tap CTRL-C to stop".format( + server, port)) httpd.serve_forever() except Exception as e: if excqueue is not None: From fa719315035b38633aee88d1a10927b3ce018032 Mon Sep 17 00:00:00 2001 From: Justin Mayer Date: Fri, 17 Jan 2020 15:22:12 +0100 Subject: [PATCH 2/2] Exit web server gracefully when user taps CTRL-C Users were previously met with an ugly traceback. Now `pelican --listen` invocations, when quit via CTRL-C, are followed instead by a more user-friendly message. --- pelican/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pelican/__init__.py b/pelican/__init__.py index e040ca4d..97135a62 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -475,6 +475,10 @@ def listen(server, port, output, excqueue=None): excqueue.put(traceback.format_exception_only(type(e), e)[-1]) return + except KeyboardInterrupt: + print("\nKeyboard interrupt received. Shutting down server.") + httpd.socket.close() + def main(argv=None): args = parse_arguments(argv)