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)