Skip to content

Commit 4d16a21

Browse files
MOS CIGerrit Code Review
authored andcommitted
Merge "Add retry for websocket connection"
2 parents 9dc2c8d + abd5048 commit 4d16a21

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

rockoon/websocket_client.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from urllib.parse import urlparse, urlunparse
2222

23-
from websocket import WebSocket, ABNF
23+
from websocket import WebSocket, ABNF, WebSocketException
2424

2525

2626
class channels(IntEnum):
@@ -31,6 +31,24 @@ class channels(IntEnum):
3131

3232

3333
DEFAULT_HTTP_TIMEOUT = 10
34+
DEFAULT_RETRIES = 12
35+
DEFAULT_RETRY_INTERVAL = 5
36+
37+
38+
def sock_retry(func):
39+
def wrapper(*args, **kwargs):
40+
attempt = 1
41+
while True:
42+
try:
43+
res = func(*args, **kwargs)
44+
return res
45+
except WebSocketException as e:
46+
if attempt == DEFAULT_RETRIES:
47+
raise e
48+
attempt += 1
49+
time.sleep(DEFAULT_RETRY_INTERVAL)
50+
51+
return wrapper
3452

3553

3654
class KubernetesWebSocketsClient:
@@ -56,10 +74,14 @@ def __init__(
5674
self.sock = WebSocket(
5775
sslopt=self.ssl_headers, skip_utf8_validation=False
5876
)
59-
self.sock.connect(self.url, header=headers)
77+
self._sock_connect(self.url, headers)
6078

6179
self._connected = True
6280

81+
@sock_retry
82+
def _sock_connect(self, url, headers):
83+
self.sock.connect(url, header=headers)
84+
6385
@property
6486
def url(self):
6587
parsed_url = urlparse(self._url)

0 commit comments

Comments
 (0)