diff --git a/izzylib/http_server/application.py b/izzylib/http_server/application.py index 2377449..a9bdb97 100644 --- a/izzylib/http_server/application.py +++ b/izzylib/http_server/application.py @@ -68,11 +68,6 @@ class Application(sanic.Sanic): self.add_error_handler(MissingTemplateError) self.add_error_handler(GenericError) - signal.signal(signal.SIGHUP, self.finish) - signal.signal(signal.SIGINT, self.finish) - signal.signal(signal.SIGQUIT, self.finish) - signal.signal(signal.SIGTERM, self.finish) - ## compat self.start = self.run @@ -143,19 +138,34 @@ class Application(sanic.Sanic): return handler - def run(self): + def run(self, log=False, async_server=False): + signal.signal(signal.SIGHUP, self.finish) + signal.signal(signal.SIGINT, self.finish) + signal.signal(signal.SIGQUIT, self.finish) + signal.signal(signal.SIGTERM, self.finish) + # register built-in middleware now so they're last in the chain self.add_middleware(Headers) if self.cfg.access_log: self.add_middleware(AccessLog) - msg = f'Starting {self.cfg.name} at {self.cfg.listen}:{self.cfg.port}' + if log: + msg = f'Starting {self.cfg.name} at {self.cfg.listen}:{self.cfg.port}' - if self.cfg.workers > 1: - msg += f' with {self.cfg.workers} workers' + if self.cfg.workers > 1 and not async_server: + msg += f' with {self.cfg.workers} workers' - izzylog.info(msg) + izzylog.info(msg) + + if async_server: + return self.create_server( + host = self.cfg.listen, + port = self.cfg.port, + access_log = False, + debug = False, + return_asyncio_server = True + ) super().run( host = self.cfg.listen, @@ -167,12 +177,16 @@ class Application(sanic.Sanic): ) + def run_async(self): + return self.run(async_server=True) + + def finish(self, *args): if self.cfg.sig_handler: self.cfg.sig_handler(self, *self.cfg.sig_handler_args, **self.cfg.sig_handler_kwargs) self.stop() - izzylog.info('Bye! :3') + #izzylog.info('Bye! :3') #sys.exit()