refactor: move simple server into standalone file

This commit is contained in:
Vikash Kothary 2022-10-14 22:42:35 +01:00
parent f6a7c21420
commit 3448edf5d7
2 changed files with 31 additions and 23 deletions

View File

@ -2,12 +2,11 @@ import os
import sys import sys
import logging import logging
from wsgiref.simple_server import make_server, WSGIRequestHandler
import ankisyncd import ankisyncd
import ankisyncd.config import ankisyncd.config
from ankisyncd.sync_app import SyncApp from ankisyncd.sync_app import SyncApp
from ankisyncd.thread import shutdown from ankisyncd.server import run_server
logger = logging.getLogger("ankisyncd") 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))) 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(): def main():
logging.basicConfig( logging.basicConfig(
level=logging.INFO, format="[%(asctime)s]:%(levelname)s:%(name)s:%(message)s" level=logging.INFO, format="[%(asctime)s]:%(levelname)s:%(name)s:%(message)s"
@ -41,17 +30,7 @@ def main():
config = ankisyncd.config.load() config = ankisyncd.config.load()
ankiserver = SyncApp(config) ankiserver = SyncApp(config)
httpd = make_server( run_server(ankiserver, config["host"], int(config["port"]))
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()
if __name__ == "__main__": if __name__ == "__main__":

29
src/ankisyncd/server.py Normal file
View File

@ -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()