py-graphql-client
py-graphql-client copied to clipboard
Connection crashes when Websocket connection closed by server
If there is an open subscription the client should automatically retry / reconnect, maybe with an exponential backoff. I have found the tenacity package helpful for this in the past.
Exception has occurred: WebSocketConnectionClosedException
Connection is already closed.
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_socket.py", line 93, in recv
raise WebSocketConnectionClosedException(
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_core.py", line 449, in _recv
return recv(self.sock, bufsize)
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_abnf.py", line 396, in recv_strict
bytes_ = self.recv(min(16384, shortage))
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_abnf.py", line 309, in recv_header
header = self.recv_strict(2)
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_abnf.py", line 361, in recv_frame
self.recv_header()
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_core.py", line 374, in recv_frame
return self.frame_buffer.recv_frame()
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_core.py", line 340, in recv_data_frame
frame = self.recv_frame()
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_core.py", line 327, in recv_data
opcode, frame = self.recv_data_frame(control_frame)
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/websocket/_core.py", line 310, in recv
opcode, data = self.recv_data()
File "/workspaces/serenity.core/venv/lib/python3.8/site-packages/graphql_client/__init__.py", line 85, in _receiver_task
res = self._connection.recv()
File "/usr/local/python/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/python/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/local/python/lib/python3.8/threading.py", line 890, in _bootstrap
self._bootstrap_inner()
I'm having similar issues. After a day or so, sometimes the server resets the connection, but there doesn't seem to be a way to cleanly restore/retry the connection.
File "/root/.local/lib/python3.9/site-packages/websocket/_socket.py", line 81, in recv
bytes_ = sock.recv(bufsize)
File "/usr/local/lib/python3.9/ssl.py", line 1227, in recv
return self.read(buflen)
File "/usr/local/lib/python3.9/ssl.py", line 1102, in read
return self._sslobj.read(len)
ConnectionResetError: [Errno 104] Connection reset by peer
Using the stock example from the README.
Any hints on how to try/except this or another fail safe method that keeps the connection alive?
I fixed it in pull request #37 , you can use my fork till is not merged https://github.com/AleMuzzi/py-graphql-client
Thanks for reporting. And thanks to @AleMuzzi for fixing it. It is now released in 0.1.2. Please upgrade your package to get the fixed version pip install py-graphql-client==0.1.2
.