aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/networking/_websockets.py
diff options
context:
space:
mode:
authorcoletdjnz <coletdjnz@protonmail.com>2024-02-18 11:32:34 +1300
committerGitHub <noreply@github.com>2024-02-18 11:32:34 +1300
commit0085e2bab8465ee7d46d16fcade3ed5e96cc8a48 (patch)
tree387efcea430e49942f021f5786b1eb12b88edfe1 /yt_dlp/networking/_websockets.py
parent73fcfa39f59113a8728249de2c4cee3025f17dc2 (diff)
[rh] Remove additional logging handlers on close (#9032)
Fixes https://github.com/yt-dlp/yt-dlp/issues/8922 Authored by: coletdjnz
Diffstat (limited to 'yt_dlp/networking/_websockets.py')
-rw-r--r--yt_dlp/networking/_websockets.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/yt_dlp/networking/_websockets.py b/yt_dlp/networking/_websockets.py
index ed64080d6..159793204 100644
--- a/yt_dlp/networking/_websockets.py
+++ b/yt_dlp/networking/_websockets.py
@@ -90,10 +90,12 @@ class WebsocketsRH(WebSocketRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
+ self.__logging_handlers = {}
for name in ('websockets.client', 'websockets.server'):
logger = logging.getLogger(name)
handler = logging.StreamHandler(stream=sys.stdout)
handler.setFormatter(logging.Formatter(f'{self.RH_NAME}: %(message)s'))
+ self.__logging_handlers[name] = handler
logger.addHandler(handler)
if self.verbose:
logger.setLevel(logging.DEBUG)
@@ -103,6 +105,12 @@ class WebsocketsRH(WebSocketRequestHandler):
extensions.pop('timeout', None)
extensions.pop('cookiejar', None)
+ def close(self):
+ # Remove the logging handler that contains a reference to our logger
+ # See: https://github.com/yt-dlp/yt-dlp/issues/8922
+ for name, handler in self.__logging_handlers.items():
+ logging.getLogger(name).removeHandler(handler)
+
def _send(self, request):
timeout = float(request.extensions.get('timeout') or self.timeout)
headers = self._merge_headers(request.headers)