如何编写Python代码限制并发请求的每秒查询率(QPS)?

2026-05-25 03:200阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计1290个文字,预计阅读时间需要6分钟。

如何编写Python代码限制并发请求的每秒查询率(QPS)?

前两天有一个需求,需要调用某个API服务器请求数据。该服务器限制了QPS为2。因为QPS很低,所以采用了阻塞式请求。后来开通了服务,QPS提升到了。

  前两天有一个需求,需要访问某API服务器请求数据,该服务器限制了QPS=2(哈哈应该都知道是哪个服务器了吧_(:з」∠)_),因为QPS很小所以就使用阻塞式请求。后来开通了服务,QPS提高到了20,阻塞式请求满足不了这个QPS了,于是使用了GRequests来并发请求数据,但这里又遇到了一个问题:并发太快,服务器通过发送错误码拒绝了很多数据的响应,造成了资源的浪费。
  故在此记录以下几种 节流(Throttle) 方法:

  以下均假设有如下包和数据前提:

import grequests urls = [ "www.baidu.com", "www.google.com" ] requests = [ grequests.get(url) for url in urls ] * 1000 rate = 20 # 表示 20 请求/秒

time.sleep(1)

  这是最简单的方法,通过time.sleep(1)阻塞进程来控制每秒并发数量。

阅读全文

本文共计1290个文字,预计阅读时间需要6分钟。

如何编写Python代码限制并发请求的每秒查询率(QPS)?

前两天有一个需求,需要调用某个API服务器请求数据。该服务器限制了QPS为2。因为QPS很低,所以采用了阻塞式请求。后来开通了服务,QPS提升到了。

  前两天有一个需求,需要访问某API服务器请求数据,该服务器限制了QPS=2(哈哈应该都知道是哪个服务器了吧_(:з」∠)_),因为QPS很小所以就使用阻塞式请求。后来开通了服务,QPS提高到了20,阻塞式请求满足不了这个QPS了,于是使用了GRequests来并发请求数据,但这里又遇到了一个问题:并发太快,服务器通过发送错误码拒绝了很多数据的响应,造成了资源的浪费。
  故在此记录以下几种 节流(Throttle) 方法:

  以下均假设有如下包和数据前提:

import grequests urls = [ "www.baidu.com", "www.google.com" ] requests = [ grequests.get(url) for url in urls ] * 1000 rate = 20 # 表示 20 请求/秒

time.sleep(1)

  这是最简单的方法,通过time.sleep(1)阻塞进程来控制每秒并发数量。

阅读全文