Miguel Grinberg
1 year ago
Failed to extract signature
3 changed files with
49 additions and
41 deletions
-
src/socketio/async_pubsub_manager.py
-
src/socketio/pubsub_manager.py
-
tests/async/test_pubsub_manager.py
|
@ -230,11 +230,13 @@ class AsyncPubSubManager(AsyncManager): |
|
|
await self._handle_close_room(data) |
|
|
await self._handle_close_room(data) |
|
|
except asyncio.CancelledError: |
|
|
except asyncio.CancelledError: |
|
|
raise # let the outer try/except handle it |
|
|
raise # let the outer try/except handle it |
|
|
except: |
|
|
except Exception: |
|
|
self.server.logger.exception( |
|
|
self.server.logger.exception( |
|
|
'Unknown error in pubsub listening task') |
|
|
'Handler error in pubsub listening thread') |
|
|
|
|
|
self.server.logger.error('pubsub listen() exited unexpectedly') |
|
|
|
|
|
break # loop should never exit except in unit tests! |
|
|
except asyncio.CancelledError: # pragma: no cover |
|
|
except asyncio.CancelledError: # pragma: no cover |
|
|
break |
|
|
break |
|
|
except: # pragma: no cover |
|
|
except Exception: # pragma: no cover |
|
|
import traceback |
|
|
self.server.logger.exception('Unexpected Error in pubsub ' |
|
|
traceback.print_exc() |
|
|
'listening thread') |
|
|
|
@ -188,6 +188,8 @@ class PubSubManager(Manager): |
|
|
namespace=message.get('namespace')) |
|
|
namespace=message.get('namespace')) |
|
|
|
|
|
|
|
|
def _thread(self): |
|
|
def _thread(self): |
|
|
|
|
|
while True: |
|
|
|
|
|
try: |
|
|
for message in self._listen(): |
|
|
for message in self._listen(): |
|
|
data = None |
|
|
data = None |
|
|
if isinstance(message, dict): |
|
|
if isinstance(message, dict): |
|
@ -220,6 +222,11 @@ class PubSubManager(Manager): |
|
|
self._handle_leave_room(data) |
|
|
self._handle_leave_room(data) |
|
|
elif data['method'] == 'close_room': |
|
|
elif data['method'] == 'close_room': |
|
|
self._handle_close_room(data) |
|
|
self._handle_close_room(data) |
|
|
except: |
|
|
except Exception: |
|
|
self.server.logger.exception( |
|
|
self.server.logger.exception( |
|
|
'Unknown error in pubsub listening thread') |
|
|
'Handler error in pubsub listening thread') |
|
|
|
|
|
self.server.logger.error('pubsub listen() exited unexpectedly') |
|
|
|
|
|
break # loop should never exit except in unit tests! |
|
|
|
|
|
except Exception: # pragma: no cover |
|
|
|
|
|
self.server.logger.exception('Unexpected Error in pubsub ' |
|
|
|
|
|
'listening thread') |
|
|
|
@ -541,7 +541,6 @@ class TestAsyncPubSubManager(unittest.TestCase): |
|
|
'host_id': host_id} |
|
|
'host_id': host_id} |
|
|
yield pickle.dumps({'method': 'close_room', 'value': 'baz', |
|
|
yield pickle.dumps({'method': 'close_room', 'value': 'baz', |
|
|
'host_id': host_id}) |
|
|
'host_id': host_id}) |
|
|
raise asyncio.CancelledError() # force the thread to exit |
|
|
|
|
|
|
|
|
|
|
|
self.pm._listen = messages |
|
|
self.pm._listen = messages |
|
|
_run(self.pm._thread()) |
|
|
_run(self.pm._thread()) |
|
|