Retry failed commands
This commit is contained in:
parent
8f9da7f4d0
commit
0d1a2b9ca2
2 changed files with 26 additions and 10 deletions
|
|
@ -1,10 +1,8 @@
|
||||||
Release 0.6.1 #41 #52
|
Release 0.6.1 #41 #52
|
||||||
Fix connection status code 400 error
|
|
||||||
Rename connected to opened
|
|
||||||
Add retry to engineio commands
|
|
||||||
Run README commands
|
Run README commands
|
||||||
Merge sarietta's pull request
|
Merge sarietta's pull request
|
||||||
Add Websocket transport
|
Add Websocket transport
|
||||||
|
Update proxy to include websocket depending on argument
|
||||||
Consider logging packets sent and received
|
Consider logging packets sent and received
|
||||||
Implement rooms #65
|
Implement rooms #65
|
||||||
Implement binary event
|
Implement binary event
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,17 @@ BaseNamespace = SocketIONamespace
|
||||||
LoggingNamespace = LoggingSocketIONamespace
|
LoggingNamespace = LoggingSocketIONamespace
|
||||||
|
|
||||||
|
|
||||||
|
def retry(f):
|
||||||
|
def wrap(*args, **kw):
|
||||||
|
self = args[0]
|
||||||
|
try:
|
||||||
|
return f(*args, **kw)
|
||||||
|
except (TimeoutError, ConnectionError):
|
||||||
|
self._opened = False
|
||||||
|
return f(*args, **kw)
|
||||||
|
return wrap
|
||||||
|
|
||||||
|
|
||||||
class EngineIO(LoggingMixin):
|
class EngineIO(LoggingMixin):
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
|
|
@ -28,10 +39,10 @@ class EngineIO(LoggingMixin):
|
||||||
self._wait_for_connection = wait_for_connection
|
self._wait_for_connection = wait_for_connection
|
||||||
self._client_transports = transports
|
self._client_transports = transports
|
||||||
self._hurry_interval_in_seconds = hurry_interval_in_seconds
|
self._hurry_interval_in_seconds = hurry_interval_in_seconds
|
||||||
self._http_session = prepare_http_session(kw)
|
self._kw = kw
|
||||||
self._log_name = self._url
|
self._log_name = self._url
|
||||||
self._wants_to_close = False
|
self._wants_to_close = False
|
||||||
self.connected = False
|
self._opened = False
|
||||||
if Namespace:
|
if Namespace:
|
||||||
self.define(Namespace)
|
self.define(Namespace)
|
||||||
|
|
||||||
|
|
@ -39,17 +50,18 @@ class EngineIO(LoggingMixin):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _transport(self):
|
def _transport(self):
|
||||||
if self.connected:
|
if self._opened:
|
||||||
return self._transport_instance
|
return self._transport_instance
|
||||||
self._engineIO_session = self._get_engineIO_session()
|
self._engineIO_session = self._get_engineIO_session()
|
||||||
self._transport_instance = self._negotiate_transport()
|
self._transport_instance = self._negotiate_transport()
|
||||||
self._connect_namespaces()
|
self._connect_namespaces()
|
||||||
self.connected = True
|
self._opened = True
|
||||||
self._reset_heartbeat()
|
self._reset_heartbeat()
|
||||||
return self._transport_instance
|
return self._transport_instance
|
||||||
|
|
||||||
def _get_engineIO_session(self):
|
def _get_engineIO_session(self):
|
||||||
warning_screen = self._yield_warning_screen()
|
warning_screen = self._yield_warning_screen()
|
||||||
|
self._http_session = prepare_http_session(self._kw)
|
||||||
for elapsed_time in warning_screen:
|
for elapsed_time in warning_screen:
|
||||||
transport = XHR_PollingTransport(
|
transport = XHR_PollingTransport(
|
||||||
self._http_session, self._is_secure, self._url)
|
self._http_session, self._is_secure, self._url)
|
||||||
|
|
@ -130,34 +142,40 @@ class EngineIO(LoggingMixin):
|
||||||
def send(self, engineIO_packet_data):
|
def send(self, engineIO_packet_data):
|
||||||
self._message(engineIO_packet_data)
|
self._message(engineIO_packet_data)
|
||||||
|
|
||||||
|
@retry
|
||||||
def _open(self):
|
def _open(self):
|
||||||
engineIO_packet_type = 0
|
engineIO_packet_type = 0
|
||||||
self._transport.send_packet(engineIO_packet_type, '')
|
self._transport.send_packet(engineIO_packet_type, '')
|
||||||
|
|
||||||
def _close(self):
|
def _close(self):
|
||||||
self._wants_to_close = True
|
self._wants_to_close = True
|
||||||
if not self.connected:
|
if not self._opened:
|
||||||
return
|
return
|
||||||
engineIO_packet_type = 1
|
engineIO_packet_type = 1
|
||||||
self._transport.send_packet(engineIO_packet_type, '')
|
self._transport.send_packet(engineIO_packet_type, '')
|
||||||
self.connected = False
|
self._opened = False
|
||||||
|
|
||||||
|
@retry
|
||||||
def _ping(self, engineIO_packet_data=''):
|
def _ping(self, engineIO_packet_data=''):
|
||||||
engineIO_packet_type = 2
|
engineIO_packet_type = 2
|
||||||
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
||||||
|
|
||||||
|
@retry
|
||||||
def _pong(self, engineIO_packet_data=''):
|
def _pong(self, engineIO_packet_data=''):
|
||||||
engineIO_packet_type = 3
|
engineIO_packet_type = 3
|
||||||
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
||||||
|
|
||||||
|
@retry
|
||||||
def _message(self, engineIO_packet_data):
|
def _message(self, engineIO_packet_data):
|
||||||
engineIO_packet_type = 4
|
engineIO_packet_type = 4
|
||||||
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
||||||
|
|
||||||
|
@retry
|
||||||
def _upgrade(self):
|
def _upgrade(self):
|
||||||
engineIO_packet_type = 5
|
engineIO_packet_type = 5
|
||||||
self._transport.send_packet(engineIO_packet_type, '')
|
self._transport.send_packet(engineIO_packet_type, '')
|
||||||
|
|
||||||
|
@retry
|
||||||
def _noop(self):
|
def _noop(self):
|
||||||
engineIO_packet_type = 6
|
engineIO_packet_type = 6
|
||||||
self._transport.send_packet(engineIO_packet_type, '')
|
self._transport.send_packet(engineIO_packet_type, '')
|
||||||
|
|
@ -317,7 +335,7 @@ class SocketIO(EngineIO):
|
||||||
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
||||||
|
|
||||||
def disconnect(self, path=''):
|
def disconnect(self, path=''):
|
||||||
if not self.connected:
|
if not self._opened:
|
||||||
return
|
return
|
||||||
if path:
|
if path:
|
||||||
socketIO_packet_type = 1
|
socketIO_packet_type = 1
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue