Browse Source

[fix] error recorder: avoid RuntimeError on some rare occasion

httpx.RequestError (subclass of httpx.HTTPError) has a property request.
This property raises a RuntimeError if the attributes _request is None.
To avoid a cascade of errors, this commit reads directly the _request attribute.
Alexandre Flament 3 years ago
parent
commit
41f6359d06
1 changed files with 4 additions and 2 deletions
  1. 4 2
      searx/metrics/error_recorder.py

+ 4 - 2
searx/metrics/error_recorder.py

@@ -74,9 +74,11 @@ def get_request_exception_messages(exc: HTTPError)\
     status_code = None
     reason = None
     hostname = None
-    if hasattr(exc, 'request') and exc.request is not None:
+    if hasattr(exc, '_request') and exc._request is not None:
+        # exc.request is property that raise an RuntimeException
+        # if exc._request is not defined.
         url = exc.request.url
-    if url is None and hasattr(exc, 'response') and exc.respones is not None:
+    if url is None and hasattr(exc, 'response') and exc.response is not None:
         url = exc.response.url
     if url is not None:
         hostname = url.host