From d5d1d3b45a449b8b84aea0478712475bfb7ba26e Mon Sep 17 00:00:00 2001 From: Yun Xu Date: Tue, 8 Aug 2017 21:58:10 -0700 Subject: [PATCH] add trigger before_start events in create_server --- sanic/app.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sanic/app.py b/sanic/app.py index f0ccad86..7587c0c2 100644 --- a/sanic/app.py +++ b/sanic/app.py @@ -633,14 +633,28 @@ class Sanic: warnings.simplefilter('default') warnings.warn("stop_event will be removed from future versions.", DeprecationWarning) + server_settings = self._helper( host=host, port=port, debug=debug, ssl=ssl, sock=sock, loop=get_event_loop(), protocol=protocol, backlog=backlog, run_async=True, has_log=log_config is not None) + # Trigger before_start events + await self.trigger_events(server_settings.get('before_start', []), server_settings.get('loop')) + return await serve(**server_settings) + async def trigger_events(self, events, loop): + """Trigger events (functions or async) + :param events: one or more sync or async functions to execute + :param loop: event loop + """ + for event in events: + result = event(loop) + if isawaitable(result): + await result + async def _run_request_middleware(self, request): # The if improves speed. I don't know why if self.request_middleware: