首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待get请求的完成

等待get请求的完成
EN

Stack Overflow用户
提问于 2019-06-20 20:09:51
回答 1查看 973关注 0票数 0

我必须获得几页的json,其中包含约130,000条条目。

请求相当简单,因为:

代码语言:javascript
复制
response = requests.request("GET", url, headers=headers, params=querystring)

其中,querystring是一个访问令牌,而头相当简单。

我创建了一个while循环,基本上每个请求url都以

代码语言:javascript
复制
https://urlprovider.com/endpointname?pageSize=10000&rowStart=0

rowStart通过pageSize递增,直到没有更多的页面为止。

我遇到的问题是,在5-8次请求成功后,我得到了以下响应:

代码语言:javascript
复制
{'errorCode': 'ERROR_XXX', 'code': 503, 'message': 'Maximum limit for unprocessed API requests have been reached. Please try again later.', 'success': False}

从错误消息中,我得到在最后一个请求完成之前启动下一个请求。有谁知道我如何确保get请求在下一个请求开始之前已经完成(除了一些粗糙的东西,比如sleep()),或者是否错误可能在其他地方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-20 20:52:41

我找到了我问题的答案。

  1. 请求是同步的,这意味着它将一直等到调用完成后再继续。
  2. 来自API提供程序的响应具有误导性,因为请求在下一个请求出现之前已经被处理过了。
  3. 根本原因很难评估,但可能与API提供程序施加的限制有关。

起作用的是:

  • 一个粗略的sleep(10),它使程序在处理下一个请求之前等待10秒。
  • 更好的解决方案:创建一个会话。根据文件:

会话对象..。将使用urllib3 3的连接池。因此,如果您向同一台主机发出多个请求,则将重用底层TCP连接,这可能会显著提高性能(请参阅HTTP持久连接)。

这不仅解决了问题,而且与我的初始代码相比也提高了性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56693224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档