From 3448edf5d79f9119b8050da5edd88ce35174d89f Mon Sep 17 00:00:00 2001 From: Vikash Kothary Date: Fri, 14 Oct 2022 22:42:35 +0100 Subject: [PATCH] refactor: move simple server into standalone file --- src/ankisyncd/__main__.py | 25 ++----------------------- src/ankisyncd/server.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 23 deletions(-) create mode 100644 src/ankisyncd/server.py diff --git a/src/ankisyncd/__main__.py b/src/ankisyncd/__main__.py index c9d3c61..398a109 100644 --- a/src/ankisyncd/__main__.py +++ b/src/ankisyncd/__main__.py @@ -2,12 +2,11 @@ import os import sys import logging -from wsgiref.simple_server import make_server, WSGIRequestHandler import ankisyncd import ankisyncd.config from ankisyncd.sync_app import SyncApp -from ankisyncd.thread import shutdown +from ankisyncd.server import run_server logger = logging.getLogger("ankisyncd") @@ -16,16 +15,6 @@ if __package__ is None and not hasattr(sys, "frozen"): sys.path.insert(0, os.path.dirname(os.path.dirname(path))) -class RequestHandler(WSGIRequestHandler): - logger = logging.getLogger("ankisyncd.http") - - def log_error(self, format, *args): - self.logger.error("%s %s", self.address_string(), format % args) - - def log_message(self, format, *args): - self.logger.info("%s %s", self.address_string(), format % args) - - def main(): logging.basicConfig( level=logging.INFO, format="[%(asctime)s]:%(levelname)s:%(name)s:%(message)s" @@ -41,17 +30,7 @@ def main(): config = ankisyncd.config.load() ankiserver = SyncApp(config) - httpd = make_server( - config["host"], int(config["port"]), ankiserver, handler_class=RequestHandler - ) - - try: - logger.info("Serving HTTP on {} port {}...".format(*httpd.server_address)) - httpd.serve_forever() - except KeyboardInterrupt: - logger.info("Exiting...") - finally: - shutdown() + run_server(ankiserver, config["host"], int(config["port"])) if __name__ == "__main__": diff --git a/src/ankisyncd/server.py b/src/ankisyncd/server.py new file mode 100644 index 0000000..0dde908 --- /dev/null +++ b/src/ankisyncd/server.py @@ -0,0 +1,29 @@ +import logging + +from wsgiref.simple_server import make_server, WSGIRequestHandler + +from ankisyncd.thread import shutdown + +logger = logging.getLogger(__name__) + + +class RequestHandler(WSGIRequestHandler): + logger = logging.getLogger("ankisyncd.http") + + def log_error(self, format, *args): + self.logger.error("%s %s", self.address_string(), format % args) + + def log_message(self, format, *args): + self.logger.info("%s %s", self.address_string(), format % args) + + +def run_server(app, host: str = None, port: int = None): + httpd = make_server(host, port, app, handler_class=RequestHandler) + + try: + logger.info("Serving HTTP on {} port {}...".format(*httpd.server_address)) + httpd.serve_forever() + except KeyboardInterrupt: + logger.info("Exiting...") + finally: + shutdown()