http_server.Application: add option to return asyncio coroutine for server start

This commit is contained in:
Izalia Mae 2021-10-13 21:18:35 -04:00
parent 38ab2b67e6
commit 29b5252e3e

View file

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