Event autoregister (#2140)

* Add event autoregistration

* Setup tests

* Cleanup IDE added imports

* Remove unused imports
This commit is contained in:
Adam Hopkins
2021-06-01 10:44:07 +03:00
committed by GitHub
parent 16875b1f41
commit 0c3a8392f2
4 changed files with 82 additions and 24 deletions

View File

@@ -382,11 +382,19 @@ class Sanic(BaseSanic):
condition=condition,
)
def event(self, event: str, timeout: Optional[Union[int, float]] = None):
async def event(
self, event: str, timeout: Optional[Union[int, float]] = None
):
signal = self.signal_router.name_index.get(event)
if not signal:
raise NotFound("Could not find signal %s" % event)
return wait_for(signal.ctx.event.wait(), timeout=timeout)
if self.config.EVENT_AUTOREGISTER:
self.signal_router.reset()
self.add_signal(None, event)
signal = self.signal_router.name_index.get(event)
self.signal_router.finalize()
else:
raise NotFound("Could not find signal %s" % event)
return await wait_for(signal.ctx.event.wait(), timeout=timeout)
def enable_websocket(self, enable=True):
"""Enable or disable the support for websocket.