Pass on wait timeout to underlying transports
This commit is contained in:
parent
2e2496cd4c
commit
d05683262b
2 changed files with 12 additions and 10 deletions
|
|
@ -172,7 +172,7 @@ class SocketIO(object):
|
||||||
for elapsed_time in warning_screen:
|
for elapsed_time in warning_screen:
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
self._process_events()
|
self._process_events(timeout=seconds)
|
||||||
except TimeoutError:
|
except TimeoutError:
|
||||||
pass
|
pass
|
||||||
if self._stop_waiting(for_callbacks):
|
if self._stop_waiting(for_callbacks):
|
||||||
|
|
@ -188,8 +188,8 @@ class SocketIO(object):
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def _process_events(self):
|
def _process_events(self, timeout=None):
|
||||||
for packet in self._transport.recv_packet():
|
for packet in self._transport.recv_packet(timeout=timeout):
|
||||||
try:
|
try:
|
||||||
self._process_packet(packet)
|
self._process_packet(packet)
|
||||||
except PacketError as e:
|
except PacketError as e:
|
||||||
|
|
|
||||||
|
|
@ -71,13 +71,13 @@ class _AbstractTransport(object):
|
||||||
self.send(packet_text)
|
self.send(packet_text)
|
||||||
_log.debug('[packet sent] %s', packet_text)
|
_log.debug('[packet sent] %s', packet_text)
|
||||||
|
|
||||||
def recv_packet(self):
|
def recv_packet(self, timeout=None):
|
||||||
try:
|
try:
|
||||||
while self._packets:
|
while self._packets:
|
||||||
yield self._packets.pop(0)
|
yield self._packets.pop(0)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
for packet_text in self.recv():
|
for packet_text in self.recv(timeout=timeout):
|
||||||
_log.debug('[packet received] %s', packet_text)
|
_log.debug('[packet received] %s', packet_text)
|
||||||
try:
|
try:
|
||||||
packet_parts = packet_text.split(':', 3)
|
packet_parts = packet_text.split(':', 3)
|
||||||
|
|
@ -145,7 +145,9 @@ class _WebsocketTransport(_AbstractTransport):
|
||||||
_log.warn(message)
|
_log.warn(message)
|
||||||
raise ConnectionError(message)
|
raise ConnectionError(message)
|
||||||
|
|
||||||
def recv(self):
|
def recv(self, timeout=None):
|
||||||
|
if timeout:
|
||||||
|
self._connection.settimeout(timeout)
|
||||||
try:
|
try:
|
||||||
yield self._connection.recv()
|
yield self._connection.recv()
|
||||||
except websocket.WebSocketTimeoutException as e:
|
except websocket.WebSocketTimeoutException as e:
|
||||||
|
|
@ -190,12 +192,12 @@ class _XHR_PollingTransport(_AbstractTransport):
|
||||||
data=packet_text,
|
data=packet_text,
|
||||||
timeout=TIMEOUT_IN_SECONDS)
|
timeout=TIMEOUT_IN_SECONDS)
|
||||||
|
|
||||||
def recv(self):
|
def recv(self, timeout=None):
|
||||||
response = _get_response(
|
response = _get_response(
|
||||||
self._http_session.get,
|
self._http_session.get,
|
||||||
self._url,
|
self._url,
|
||||||
params=self._params,
|
params=self._params,
|
||||||
timeout=TIMEOUT_IN_SECONDS)
|
timeout=timeout or TIMEOUT_IN_SECONDS)
|
||||||
response_text = response.text
|
response_text = response.text
|
||||||
if not response_text.startswith(BOUNDARY):
|
if not response_text.startswith(BOUNDARY):
|
||||||
yield response_text
|
yield response_text
|
||||||
|
|
@ -244,14 +246,14 @@ class _JSONP_PollingTransport(_AbstractTransport):
|
||||||
headers={'content-type': 'application/x-www-form-urlencoded'},
|
headers={'content-type': 'application/x-www-form-urlencoded'},
|
||||||
timeout=TIMEOUT_IN_SECONDS)
|
timeout=TIMEOUT_IN_SECONDS)
|
||||||
|
|
||||||
def recv(self):
|
def recv(self, timeout=None):
|
||||||
'Decode the JavaScript response so that we can parse it as JSON'
|
'Decode the JavaScript response so that we can parse it as JSON'
|
||||||
response = _get_response(
|
response = _get_response(
|
||||||
self._http_session.get,
|
self._http_session.get,
|
||||||
self._url,
|
self._url,
|
||||||
params=self._params,
|
params=self._params,
|
||||||
headers={'content-type': 'text/javascript; charset=UTF-8'},
|
headers={'content-type': 'text/javascript; charset=UTF-8'},
|
||||||
timeout=TIMEOUT_IN_SECONDS)
|
timeout=timeout or TIMEOUT_IN_SECONDS)
|
||||||
response_text = response.text
|
response_text = response.text
|
||||||
try:
|
try:
|
||||||
self._id, response_text = self.RESPONSE_PATTERN.match(
|
self._id, response_text = self.RESPONSE_PATTERN.match(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue