0

我正在使用一个对我进行速率限制的 API,如果我过于频繁地访问 URL,它会迫使我等待并重试我的请求。假设为了争论,我不知道具体的速率限制阈值是什么(即使我知道也不想将一个硬编码到我的应用程序中)。

我可以进行 API 调用并观察它是否成功,或者回复说我受到速率限制的响应,然后稍后再试一次,我可以记录在成功完成 API 之前所有尝试所用的总时间称呼。

哪些算法非常适合预测在达到速率限制后重试 API 调用之前需要等待的最短时间?

4

1 回答 1

0

使用像单边二分搜索这样的东西。

请参阅算法设计手册的第 134 页

现在假设我们有一个数组A由一系列 0 组成,然后是无界的 1,并且想要确定它们之间的确切转换点。如果我们在数组中的元素数量上有一个界限n ,则数组上的二进制搜索将提供⌈lg n ⌉测试中的转换点。在没有这样一个界限的情况下,我们可以以更大的间隔(A[1]、A[2]、A[4]、A[8]、A[16]、...)重复测试,直到找到第一个非零值。现在我们有一个包含目标的窗口,可以继续进行二分搜索。这种单边二分搜索最多使用2 ⌈lg(p)⌉找到过渡点p 比较,无论数组实际上有多大。每当我们寻找可能靠近我们当前位置的键时,单边二分搜索最有用。

于 2013-06-10T10:48:47.783 回答