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(MissingTemplateError)
self.add_error_handler(GenericError) 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 ## compat
self.start = self.run self.start = self.run
@ -143,19 +138,34 @@ class Application(sanic.Sanic):
return handler 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 # register built-in middleware now so they're last in the chain
self.add_middleware(Headers) self.add_middleware(Headers)
if self.cfg.access_log: if self.cfg.access_log:
self.add_middleware(AccessLog) 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: if self.cfg.workers > 1 and not async_server:
msg += f' with {self.cfg.workers} workers' 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( super().run(
host = self.cfg.listen, 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): def finish(self, *args):
if self.cfg.sig_handler: if self.cfg.sig_handler:
self.cfg.sig_handler(self, *self.cfg.sig_handler_args, **self.cfg.sig_handler_kwargs) self.cfg.sig_handler(self, *self.cfg.sig_handler_args, **self.cfg.sig_handler_kwargs)
self.stop() self.stop()
izzylog.info('Bye! :3') #izzylog.info('Bye! :3')
#sys.exit() #sys.exit()