logo
icon

集蜂云Docs

集蜂云
控制台
市场
设置
费用
采集器
运行与构建
输入与输出
构建
任务
发布
分享
开发
快速开始
创建采集器
输入
输出
采集队列
键值对
SDK
代码示例
数据-存储
数据-数据集
数据-键值对
数据-采集队列
代理
集成
webhook
企业微信
飞书
钉钉
邮箱
与其他采集器
收益
API

采集队列

使用采集队列

beeize-sdk-python 提供的请求队列管理功能,可以帮助开发者组织和调度网络请求,对成功和失败的请求进行标记。

将请求添加到队列

要将请求添加到队列中,可以使用 RequestQueue.add_request() 方法。

您可以使用 的请求来唯一标识请求。如果您尝试使用相同的唯一键添加更多请求, 只会添加第一个 。

读取请求

要从队列中获取下一个请求进行处理, 您可以使用 queue.fetch_next_request() 方法。

若要从队列中获取有关特定请求的信息,请执行以下操作: 您可以使用 queue.get_request() 方法。

处理请求

若要将请求标记为已处理,可以使用 queue.mark_request_as_handled() 方法。

要将请求标记为未处理,以便重试该请求, 您可以使用 queue.reclaim_request()方法。

要检查队列中的所有请求是否都已处理, 您可以使用 queue.is_finished()方法。

完整示例

import requests
from beeize.scraper import Scraper

scraper = Scraper()
queue = scraper.request_queue

# 添加请求任务到队列
for page in range(1, 10):
    url = 'http://127.0.0.1:80?page={}'.format(page)
    request = {'url': url}
    queue.add_request(request)

def fetch(url, retry_count=0):
    try:
        response = requests.get(
            url=url,
            headers=headers
        )
        return response.text
    except (Exception,):
        if retry_count < 3:
            return fetch(url, retry_count + 1)

# 消费队列中的请求任务
while queue.is_finished():
    # 取任务
    request = queue.fetch_next_request()
    url = request['url']
    response = fetch(url)
    if not response:
        # 对失败请求进行标记
        queue.reclaim_request(request)
        continue
    # 对成功请求进行标记
    queue.mark_request_as_handled(request)

云平台展示-采集队列

采集队列1.png