From 20becca336caae61cd24f7afba0e177c0a210c70 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Mon, 9 Apr 2018 11:36:06 +0100 Subject: [PATCH 1/2] read queue of 1 message --- tornado/websocket.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/tornado/websocket.py b/tornado/websocket.py index 91c5f1ff9e..b536c3ced9 100644 --- a/tornado/websocket.py +++ b/tornado/websocket.py @@ -34,6 +34,7 @@ from tornado.iostream import StreamClosedError from tornado.log import gen_log, app_log from tornado import simple_httpclient +from tornado.queues import Queue from tornado.tcpclient import TCPClient from tornado.util import _websocket_mask, PY3 @@ -1096,8 +1097,7 @@ def __init__(self, request, on_message_callback=None, self.compression_options = compression_options self.connect_future = Future() self.protocol = None - self.read_future = None - self.read_queue = collections.deque() + self.read_queue = Queue(1) self.key = base64.b64encode(os.urandom(16)) self._on_message_callback = on_message_callback self.close_code = self.close_reason = None @@ -1207,12 +1207,8 @@ def read_message(self, callback=None): is given it will be called with the future when it is ready. """ - assert self.read_future is None - future = Future() - if self.read_queue: - future_set_result_unless_cancelled(future, self.read_queue.popleft()) - else: - self.read_future = future + + future = self.read_queue.get() if callback is not None: self.io_loop.add_future(future, callback) return future @@ -1220,11 +1216,8 @@ def read_message(self, callback=None): def on_message(self, message): if self._on_message_callback: self._on_message_callback(message) - elif self.read_future is not None: - future_set_result_unless_cancelled(self.read_future, message) - self.read_future = None else: - self.read_queue.append(message) + return self.read_queue.put(message) def ping(self, data=b''): """Send ping frame to the remote end. From 3f62e7e678de314c28d14978513a470e56b46fbc Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Mon, 9 Apr 2018 13:47:37 +0100 Subject: [PATCH 2/2] Remove unused import --- tornado/websocket.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tornado/websocket.py b/tornado/websocket.py index b536c3ced9..738a9ccb80 100644 --- a/tornado/websocket.py +++ b/tornado/websocket.py @@ -19,7 +19,6 @@ from __future__ import absolute_import, division, print_function import base64 -import collections import hashlib import os import struct