我正在与第三方 API 交互,该 API 会返回调用限制阈值以及到目前为止我已使用该阈值的调用次数。我相信每分钟有 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))
使用我们的值等同于秒。因为我们主要存储为刻度。
关于c# - 指数延迟客户端 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806503/