pagination
feishu.pagination
¶
iterate
async
¶
iterate(fetch: Callable[[str | None], Awaitable[NestedDict]], *, max_items: int | None = None, early_stop: Callable[[list[Any], Any], bool] | None = None, items_key: str = 'items') -> AsyncIterator[Any]
逐条异步迭代飞书分页接口返回的全部条目。
反复调用 fetch(page_token) 翻页,从每页响应体的 data[items_key](默认 items)
中逐条产出,并依据 data.has_more 与 data.page_token 决定是否继续翻页。可通过
max_items 限制最多产出的条目数,或通过 early_stop 在满足条件时提前停止。
为防止异常响应导致死循环,当 has_more 为真但下一页 page_token 为空或与上一页
相同时,亦立即停止翻页。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Callable[[str | None], Awaitable[NestedDict]]
|
接受 |
必需 |
|
int | None
|
最多产出的条目数;为 |
None
|
|
Callable[[list[Any], Any], bool] | None
|
形如 |
None
|
|
str
|
每页响应体中条目所在的字段名,默认 |
'items'
|
产生:
| 类型 | 描述 |
|---|---|
AsyncIterator[Any]
|
分页结果中的每一条目,按页内顺序依次产出。 |
飞书文档
示例:
源代码位于: feishu/pagination.py
paginate
async
¶
paginate(fetch: Callable[[str | None], Awaitable[NestedDict]], *, max_items: int | None = None, early_stop: Callable[[list[Any], Any], bool] | None = None, items_key: str = 'items') -> list[Any]
遍历飞书分页接口并将全部条目收集为列表。
等价于把 feishu.pagination.iterate 产出的条目一次性收集到列表中,适用于 无需流式处理、希望直接拿到完整结果的场景。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
Callable[[str | None], Awaitable[NestedDict]]
|
接受 |
必需 |
|
int | None
|
最多收集的条目数;为 |
None
|
|
Callable[[list[Any], Any], bool] | None
|
形如 |
None
|
|
str
|
每页响应体中条目所在的字段名,默认 |
'items'
|
返回:
| 类型 | 描述 |
|---|---|
list[Any]
|
包含全部(或受 |
飞书文档
示例: