Elektordi/obs-websocket-py

Adding timeout to obsws_python.EventClient() causes timeout even when connection is ok

jussikiova opened this issue · 2 comments

Hi!

Thanks for your package! It's been a pleasure to work with it. Things are simple enough yet powerful as the obsws is. I think I might have found something tiny, though. Most prolly the prob is in my end but decided to report this anyway.

I accidentally added timeout to my EventClient call, which seemed to cause weird timeout error regardless if the connection was made or not. I got a timeout error on Python side but the connection showed up in the OBS WS window in OBS. ReqClient works fine with or without timeout.

Not putting anything on the timeout argument fixed the problem.

Whether ReqClient is made or not doesn't have an effect on the outcome.

Here's the versions, code and error message

Happy holidays and/or new year!


Code:

import obsws_python as obs

password = "XXXXXXXXX"
host = "localhost"
port = 4455

event_client = obs.EventClient(host=host, port=port, password=password, timeout=1) #This fails
# event_client = obs.EventClient(host=host, port=port, password=password) #This works

Versions

Python 3.10.11
OBS 30.0.2 (64bit)
obsws-python 3.10.11


WebSocketTimeoutException: Connection timed out
Traceback (most recent call last):
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_socket.py", line 110, in recv
bytes_ = _recv()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_socket.py", line 89, in _recv
return sock.recv(bufsize)
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\obsws_python\events.py", line 64, in trigger
event = json.loads(self.base_client.ws.recv())
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 364, in recv
opcode, data = self.recv_data()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 387, in recv_data
opcode, frame = self.recv_data_frame(control_frame)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 408, in recv_data_frame
frame = self.recv_frame()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 447, in recv_frame
return self.frame_buffer.recv_frame()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_abnf.py", line 340, in recv_frame
self.recv_header()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_abnf.py", line 296, in recv_header
header = self.recv_strict(2)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_abnf.py", line 375, in recv_strict
bytes_ = self.recv(min(16384, shortage))
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 531, in _recv
return recv(self.sock, bufsize)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_socket.py", line 112, in recv
raise WebSocketTimeoutException("Connection timed out")
websocket.exceptions.WebSocketTimeoutException: Connection timed out
Exception in thread Thread-1 (trigger):
Traceback (most recent call last):
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_socket.py", line 110, in recv
bytes
= _recv()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_socket.py", line 89, in _recv
return sock.recv(bufsize)
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\obsws_python\events.py", line 64, in trigger
event = json.loads(self.base_client.ws.recv())
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 364, in recv
opcode, data = self.recv_data()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 387, in recv_data
opcode, frame = self.recv_data_frame(control_frame)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 408, in recv_data_frame
frame = self.recv_frame()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 447, in recv_frame
return self.frame_buffer.recv_frame()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_abnf.py", line 340, in recv_frame
self.recv_header()
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_abnf.py", line 296, in recv_header
header = self.recv_strict(2)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_abnf.py", line 375, in recv_strict
bytes_ = self.recv(min(16384, shortage))
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_core.py", line 531, in _recv
return recv(self.sock, bufsize)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\websocket_socket.py", line 112, in recv
raise WebSocketTimeoutException("Connection timed out")
websocket._exceptions.WebSocketTimeoutException: Connection timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\jussi\AppData\Local\Programs\Thonny\lib\threading.py", line 1016, in _bootstrap_inner
self.run()
File "C:\Users\jussi\AppData\Local\Programs\Thonny\lib\threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\jussi\Downloads\virtuaaliympäristö\lib\site-packages\obsws_python\events.py", line 67, in trigger
raise OBSSDKTimeoutError("Timeout while waiting for event") from e
obsws_python.error.OBSSDKTimeoutError: Timeout while waiting for event


Aaaand running WIndows 11 Home 22H2

Hi, You've raised this issue in the wrong repo. This package is obs-websocket-py not obsws-python.