以指数方式延迟客户端 API 调用

Exponentially Delay Client Side API Calls

我正在与第三方交互 API,returns 调用限制阈值以及到目前为止我已经使用了多少调用阈值。我相信每分钟有 60 个电话。 1 分钟后重置。

我想延迟我的 API 调用,因为我越来越多地达到该限制,有点像指数曲线,该曲线在最大阈值处达到最大阈值的两倍。

所以在 0 时是 0 延迟。在 60 时会延迟 120 秒。

如果他们更改呼叫限制,我希望能够响应并将我的最大限制再次调整为 2 * 具有指数排序曲线的新限制。

我可以使用什么算法? (最好 VB.NET,否则 C#)

您可以按照这些思路做一些事情,我们这样做是为了在相机脱机或出现错误时不轰炸我们的邮件服务器。

public static class Delay
{
     public static double ByInterval(int maximum, int interval) => Math.Round((maximum / (Math.Pow(2, interval) - 1)), 0);
}

因此,例如,如果最大延迟应为一百二十,而我们希望间隔为三,则输出将为十五。我也四舍五入到一个整数。不确定这是否是您要查找的内容,但我们将其与附加程序耦合,因此我们会存储电子邮件,直到达到我们的阈值。例如,我们使用我们的值等同于 (10000000 * Delay.By(120, 3)) 秒。因为我们主要存储为刻度。