c# - 指数延迟客户端 API 调用

标签 c# vb.net algorithm throttling timedelay

我正在与第三方 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/

相关文章:

c# - 让 .net 应用程序和 vb6 应用程序互相交谈?

mysql - MySQL 中的图像

arrays - 使用 ArrayList 将文本文件拆分并存储到数组中

algorithm - latex 算法。无法正常工作

c# - 在 Azure 移动服务项目和 Asp.Net MVC 项目之间共享数据库

c# - 反序列化日期时间时忽略时区偏移

c# - 如何使用 CV_8UC1 类型保存 OpenCvSharp.Mat?

algorithm - 通过矩形网格的两条路径的最大赏金

algorithm - 这种将坐标映射到数字的算法叫什么?

c# - 尝试使用 XDocument 和 XmlSchemaSet 从 xml 模式在 C# 中创建 xml