소스 검색

fix: improve error handling in NotionExtractor data fetching (#12182)

Signed-off-by: -LAN- <laipz8200@outlook.com>
-LAN- 3 달 전
부모
커밋
8d15c8cfbf
1개의 변경된 파일18개의 추가작업 그리고 11개의 파일을 삭제
  1. 18 11
      api/core/rag/extractor/notion_extractor.py

+ 18 - 11
api/core/rag/extractor/notion_extractor.py

@@ -138,17 +138,24 @@ class NotionExtractor(BaseExtractor):
         block_url = BLOCK_CHILD_URL_TMPL.format(block_id=page_id)
         while True:
             query_dict: dict[str, Any] = {} if not start_cursor else {"start_cursor": start_cursor}
-            res = requests.request(
-                "GET",
-                block_url,
-                headers={
-                    "Authorization": "Bearer " + self._notion_access_token,
-                    "Content-Type": "application/json",
-                    "Notion-Version": "2022-06-28",
-                },
-                params=query_dict,
-            )
-            data = res.json()
+            try:
+                res = requests.request(
+                    "GET",
+                    block_url,
+                    headers={
+                        "Authorization": "Bearer " + self._notion_access_token,
+                        "Content-Type": "application/json",
+                        "Notion-Version": "2022-06-28",
+                    },
+                    params=query_dict,
+                )
+                if res.status_code != 200:
+                    raise ValueError(f"Error fetching Notion block data: {res.text}")
+                data = res.json()
+            except requests.RequestException as e:
+                raise ValueError("Error fetching Notion block data") from e
+            if "results" not in data or not isinstance(data["results"], list):
+                raise ValueError("Error fetching Notion block data")
             for result in data["results"]:
                 result_type = result["type"]
                 result_obj = result[result_type]