我正在使用grequests库传递〜250000个url从api获取数据。
API每秒限制100个调用。
我如何限制grequest每秒仅传入100个网址?我将大小参数从5增加到100。不知道该怎么做,但仍会出现错误“最大重试次数”。
到目前为止,这是我的代码:
import grequests
lst = ['url.com','url2.com']
class Test:
def __init__(self):
self.urls = lst
def exception(self, request, exception):
print ("Problem: {}: {}".format(request.url, exception))
def async(self):
return grequests.map((grequests.get(u) for u in self.urls), exception_handler=self.exception, size=100)
def collate_responses(self, results):
return [x.text for x in results]
test = Test()
#here we collect the results returned by the async function
results = test.async()
response_text = test.collate_responses(results)
答案 0 :(得分:1)
请求似乎发出了100个请求,然后没有任何等待就发出了另外100个请求,依此类推。在这些请求之间没有时间定义。 这是解决方案中描述的类似问题: Limiting/throttling the rate of HTTP requests in GRequests