X-Git-Url: https://jfr.im/git/yt-dlp.git/blobdiff_plain/73fcfa39f59113a8728249de2c4cee3025f17dc2..0085e2bab8465ee7d46d16fcade3ed5e96cc8a48:/yt_dlp/networking/_websockets.py 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 @@ def _check_extensions(self, extensions): 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)