fix: add max_items limit to fetch_all_edges to prevent unbounded memory growth

This commit is contained in:
Developer 2026-05-28 15:15:19 +00:00
parent 96096ea0ff
commit 3144257fe1
1 changed files with 6 additions and 1 deletions

View File

@ -106,10 +106,11 @@ def fetch_all_edges(
client: Zep, client: Zep,
graph_id: str, graph_id: str,
page_size: int = _DEFAULT_PAGE_SIZE, page_size: int = _DEFAULT_PAGE_SIZE,
max_items: int = 1000,
max_retries: int = _DEFAULT_MAX_RETRIES, max_retries: int = _DEFAULT_MAX_RETRIES,
retry_delay: float = _DEFAULT_RETRY_DELAY, retry_delay: float = _DEFAULT_RETRY_DELAY,
) -> list[Any]: ) -> list[Any]:
"""分页获取图谱所有边,返回完整列表。每页请求自带重试。""" """分页获取图谱所有边,最多返回 max_items 条(默认 1000。每页请求自带重试。"""
all_edges: list[Any] = [] all_edges: list[Any] = []
cursor: str | None = None cursor: str | None = None
page_num = 0 page_num = 0
@ -132,6 +133,10 @@ def fetch_all_edges(
break break
all_edges.extend(batch) all_edges.extend(batch)
if len(all_edges) >= max_items:
all_edges = all_edges[:max_items]
logger.warning(f"Edge count reached limit ({max_items}), stopping pagination for graph {graph_id}")
break
if len(batch) < page_size: if len(batch) < page_size:
break break