From 696a139171d82a9df19f84b5b59c17ba898d6eba Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 22 Aug 2023 15:31:47 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(GetRequest.py):=20handle=20r?= =?UTF-8?q?equest=20timeout=20by=20returning=20a=20Document=20with=20statu?= =?UTF-8?q?s=20code=20408=20and=20"Request=20Timed=20Out"=20content=20?= =?UTF-8?q?=E2=9C=A8=20feat(GetRequest.py):=20add=20timeout=20parameter=20?= =?UTF-8?q?to=20the=20build=20method=20to=20allow=20configuring=20the=20re?= =?UTF-8?q?quest=20timeout=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/utilities/GetRequest.py | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/backend/langflow/components/utilities/GetRequest.py b/src/backend/langflow/components/utilities/GetRequest.py index 856fd82c5..018b92751 100644 --- a/src/backend/langflow/components/utilities/GetRequest.py +++ b/src/backend/langflow/components/utilities/GetRequest.py @@ -25,48 +25,46 @@ class GetRequest(CustomComponent): } def get_document( - self, - url: str, - headers: Optional[dict] = None, + self, session: requests.Session, url: str, headers: Optional[dict], timeout: int ) -> Document: try: - if headers is None: - headers = {} - with requests.Session() as session: - response = session.get(url, headers=headers) - try: - response_json = response.json() - result = orjson_dumps(response_json, indent_2=False) - except Exception: - result = response.text - self.repr_value = result - return Document( - page_content=result, - metadata={ - "source": url, - "headers": headers, - "status_code": response.status_code, - }, - ) - except Exception as exc: + response = session.get(url, headers=headers, timeout=timeout) + try: + response_json = response.json() + result = orjson_dumps(response_json, indent=2) + except Exception: + result = response.text + self.repr_value = result return Document( - page_content=str(exc), + page_content=result, metadata={ "source": url, "headers": headers, - "status_code": 500, + "status_code": response.status_code, }, ) + except requests.Timeout: + return Document( + page_content="Request Timed Out", + metadata={"source": url, "headers": headers, "status_code": 408}, + ) + except Exception as exc: + return Document( + page_content=str(exc), + metadata={"source": url, "headers": headers, "status_code": 500}, + ) def build( self, url: str, headers: Optional[dict] = None, + timeout: int = 5, ) -> Document: if headers is None: headers = {} if not isinstance(url, list): url = [url] - documents = [self.get_document(u, headers) for u in url] - self.repr_value = documents + with requests.Session() as session: + documents = [self.get_document(session, u, headers, timeout) for u in url] + self.repr_value = documents return documents