http_server.Application: add option to return asyncio coroutine for server start
This commit is contained in:
parent
38ab2b67e6
commit
29b5252e3e
|
@ -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,20 +138,35 @@ 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)
|
||||||
|
|
||||||
|
if log:
|
||||||
msg = f'Starting {self.cfg.name} at {self.cfg.listen}:{self.cfg.port}'
|
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,
|
||||||
port = self.cfg.port,
|
port = self.cfg.port,
|
||||||
|
@ -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()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue