ESN-Trondheim / ESNbot

A Slack bot for ESN Trondheim
MIT License
3 stars 1 forks source link

The bot will sometimes disconnect because of WebSocketConnectionClosedException #64

Open LaiAlexander opened 10 months ago

LaiAlexander commented 10 months ago

Two almost identical stacktraces. This will probably be resolved or made more robust when we finish #19 , but for now I think it's easiest to the same kind of naive fix that is done because of TimeOutError: https://github.com/ESN-Trondheim/ESNbot/blob/cfc0bd24ae3d89333d7ce434d639fd7794e00cbb/esnbot/main.py#L40-L50

If we implement that, it should probably be made into a function.

2022-11-23 08:32:49,868 - Stack trace - ERROR - RTM connection attempt was rate limited 5 times.
2022-11-23 08:32:49,869 - Stack trace - ERROR - Traceback (most recent call last):
  File "/home/lai/.local/lib/python3.8/site-packages/slackclient/server.py", line 278, in websocket_safe_read
    data += "{0}\n".format(self.websocket.recv())
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_core.py", line 310, in recv
    opcode, data = self.recv_data()
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_core.py", line 327, in recv_data
    opcode, frame = self.recv_data_frame(control_frame)
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_core.py", line 340, in recv_data_frame
    frame = self.recv_frame()
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_core.py", line 374, in recv_frame
    return self.frame_buffer.recv_frame()
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_abnf.py", line 361, in recv_frame
    self.recv_header()
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_abnf.py", line 309, in recv_header
    header = self.recv_strict(2)
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_abnf.py", line 396, in recv_strict
    bytes_ = self.recv(min(16384, shortage))
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_core.py", line 449, in _recv
    return recv(self.sock, bufsize)
  File "/home/lai/.local/lib/python3.8/site-packages/websocket/_socket.py", line 93, in recv
    raise WebSocketConnectionClosedException(
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "esnbot.py", line 583, in run
    text, channel, user, output = parse_slack_output(slack_client.rtm_read())
  File "/home/lai/.local/lib/python3.8/site-packages/slackclient/client.py", line 235, in rtm_read
    json_data = self.server.websocket_safe_read()
  File "/home/lai/.local/lib/python3.8/site-packages/slackclient/server.py", line 293, in websocket_safe_read
    self.rtm_connect(reconnect=True)
  File "/home/lai/.local/lib/python3.8/site-packages/slackclient/server.py", line 151, in rtm_connect
    raise SlackConnectionError(
slackclient.server.SlackConnectionError: RTM connection attempt was rate limited 5 times.
2023-07-27 09:07:34,105 - Stack trace - ERROR - 
2023-07-27 09:07:34,109 - Stack trace - ERROR - Traceback (most recent call last):
  File "/home/lai/.local/lib/python3.10/site-packages/slackclient/server.py", line 278, in websocket_safe_read
    data += "{0}\n".format(self.websocket.recv())
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_core.py", line 362, in recv
    opcode, data = self.recv_data()
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_core.py", line 385, in recv_data
    opcode, frame = self.recv_data_frame(control_frame)
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_core.py", line 406, in recv_data_frame
    frame = self.recv_frame()
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_core.py", line 445, in recv_frame
    return self.frame_buffer.recv_frame()
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_abnf.py", line 338, in recv_frame
    self.recv_header()
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_abnf.py", line 294, in recv_header
    header = self.recv_strict(2)
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_abnf.py", line 373, in recv_strict
    bytes_ = self.recv(min(16384, shortage))
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_core.py", line 529, in _recv
    return recv(self.sock, bufsize)
  File "/home/lai/.local/lib/python3.10/site-packages/websocket/_socket.py", line 122, in recv
    raise WebSocketConnectionClosedException(
websocket._exceptions.WebSocketConnectionClosedException: Connection to remote host was lost.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/lai/ESNbot/esnbot.py", line 583, in run
    text, channel, user, output = parse_slack_output(slack_client.rtm_read())
  File "/home/lai/.local/lib/python3.10/site-packages/slackclient/client.py", line 235, in rtm_read
    json_data = self.server.websocket_safe_read()
  File "/home/lai/.local/lib/python3.10/site-packages/slackclient/server.py", line 293, in websocket_safe_read
    self.rtm_connect(reconnect=True)
  File "/home/lai/.local/lib/python3.10/site-packages/slackclient/server.py", line 163, in rtm_connect
    raise SlackLoginError(reply=reply)
slackclient.server.SlackLoginError