.NET Throttle算法

OrE*_*lse 5 .net c# vb.net throttling

我想在.net(C#或VB)中实现一个好的油门算法,但我无法弄清楚我怎么能这样做.

案例是我的asp.net网站应该将请求发布到另一个网站以获取结果.最多应发送每分钟300个请求.

如果请求超过300限制,则另一方Api不返回任何内容(这是我不想用作检查代码的内容).

PS我见过其他语言的解决方案而不是.net但我是新手,请善待并保持你的答案就像123一样简单.

谢谢

Pre*_*ott 6

你可以有一个简单的应用程序(或会话)类,并检查是否有命中.为了给你这个想法,这是非常粗糙的事情:

public class APIHits {
    public int hits { get; private set; }
    private DateTime minute = DateTime.Now();

    public bool AddHit()
    {
        if (hits < 300) {
            hits++;
            return true;
        }
        else
        {
            if (DateTime.Now() > minute.AddSeconds(60)) 
            {
                //60 seconds later
                minute = DateTime.Now();
                hits = 1;
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)