Merge pull request #971 from pcinkh/socket_disconnects_speedup

Critical speedup websocket disconnects from O(N) to O(1)
This commit is contained in:
Raphael Deem 2017-10-13 01:25:14 -07:00 committed by GitHub
commit d4bb14a511

View File

@ -54,7 +54,7 @@ class Sanic:
self.is_running = False self.is_running = False
self.is_request_stream = False self.is_request_stream = False
self.websocket_enabled = False self.websocket_enabled = False
self.websocket_tasks = [] self.websocket_tasks = set()
# Register alternative method names # Register alternative method names
self.go_fast = self.run self.go_fast = self.run
@ -259,7 +259,7 @@ class Sanic:
# its future is kept in self.websocket_tasks in case it # its future is kept in self.websocket_tasks in case it
# needs to be cancelled due to the server being stopped # needs to be cancelled due to the server being stopped
fut = ensure_future(handler(request, ws, *args, **kwargs)) fut = ensure_future(handler(request, ws, *args, **kwargs))
self.websocket_tasks.append(fut) self.websocket_tasks.add(fut)
try: try:
await fut await fut
except (CancelledError, ConnectionClosed): except (CancelledError, ConnectionClosed):