在返回响应之前,requests.get()(Python,Requests模块)是否会暂停脚本?

时间:2015-08-28 17:17:01

标签: python python-requests

这个问题与Python的Requests模块有关。

我正在使用requests.get()并遇到一个问题,我超出了我正在联系的服务器允许我的请求的速率限制。我已经在每个request.get()之后设置了一个time.sleep()到一个大一个数量级的东西。代码是这样的:

        for url in url_list:
            success = False
            response = requests.get(url) 
            while not success:
                time.sleep(1/250)
                if str(response) == "<Response [200]>":
                    time.sleep(1/250) # Wait Xs between API call      
                    do_stuff(response.text)
                    success = True

                else:
                    print(response)
                    print(response.headers)
                    time.sleep(3)
                    response = requests.get(url)

我在这里不断提高我的速率,这是300请求/秒,我应该每秒最多只发送125个请求。在响应到达之前,请求是否暂停脚本?我不确定。我如何确保不发送超过我的费率的请求?

1 个答案:

答案 0 :(得分:11)

requests.get是一个阻止调用。它会等到响应到来,然后程序的其余部分才会执行。如果您希望能够做其他事情,您可能需要查看asyncio或多处理模块。