HTTPError:429客户端错误:使用python在IBM Cloudant上发出太多请求

时间:2018-03-28 17:55:06

标签: python jupyter-notebook cloudant http-error

IBM Cloudant已连接到Jupyter笔记本。我可以使用不是很大的数据库。但是当我想从数据库中获取包含许多数据的数据时,我收到了这个错误:

HTTPError:429客户端错误:请求太多too_many_requests您已超出查询类每秒5个请求的当前限制。请稍后再试

这个问题有什么关系吗? 任何想法都会非常有用。

这是我的代码:

6.png

这就是我得到的

// Instance the tour
var tour = new Tour({
steps: [ ... ]
});

// Initialize the tour
tour.init();

//check page tour version
var tourpageversion = "2018-03-30";
if (localStorage.getItem("tourversion_layout") !== tourpageversion) {
    localStorage.setItem("tourversion_layout", tourpageversion);
    tour.restart();
}

// Start the tour
tour.start();

3 个答案:

答案 0 :(得分:1)

尝试这样查询:

database1 = client['comfort']
userID= input("what is your user ID?")

selector = {'user_id': {'$eq': userID}}
docs = database1.get_query_result(selector)
for doc in docs:
    do stuff...

直接来自the docs

答案 1 :(得分:0)

因此,对此的实际明确答案是在连接中添加所谓的Replay429Adapter。

这将解决捕获HTTP429错误并重试和调整连接的问题,以减轻Cloudant Lite计划对IBM Cloud的每秒5个查询限制的直接影响。
一旦你知道要寻找什么,这实际上是记录在案的:
https://python-cloudant.readthedocs.io/en/latest/getting_started.html?highlight=Replay429Adapter 您需要添加: from cloudant.adapters import Replay429Adapter 然后,添加 ,adapter=Replay429Adapter(retries=10, initialBackoff=0.01)) 到您的Cloudant客户端连接器创建

另见https://github.com/cloudant/python-cloudant/issues/249

答案 2 :(得分:0)

添加Replay429Adapter是解决此错误和真正有弹性的客户端的正确解决方案。

我的客户端连接如下(使用IAM身份验证):

from cloudant.client import Cloudant
from cloudant.adapters import Replay429Adapter
db_client = Cloudant.iam(cloudant_username, cloudant_apikey, connect=True, adapter=Replay429Adapter(retries=10, initialBackoff=0.01))