相关疑难解决方法(0)

限制方法在N秒内调用M个请求

我需要一个组件/类来限制某些方法的执行到N秒内的最大M次调用(或ms或nanos,无关紧要).

换句话说,我需要确保我的方法在N秒的滑动窗口中执行不超过M次.

如果您不知道现有的课程,请随时发布您的解决方案/想法如何实现这一点.

java throttling

128
推荐指数
7
解决办法
8万
查看次数

使用async/await时处理限制/速率限制(429错误)

我有以下异步代码从我的项目中的很多地方调用:

public async Task<HttpResponseMessage> MakeRequestAsync(HttpRequestMessage request)
{            
    var client = new HttpClient();
    return await client.SendAsync(request).ConfigureAwait(false);                
}
Run Code Online (Sandbox Code Playgroud)

如何调用上述方法的示例:

 var tasks = items.Select(async i =>
            {                    
                var response = await MakeRequestAsync(i.Url);           
                //do something with response    
            });
Run Code Online (Sandbox Code Playgroud)

我正在击中的ZenDesk API允许每分钟大约200个请求,之后我收到了429错误.如果我遇到429错误,我需要做一些Thread.sleep,但是使用async/await,并行线程中可能会有很多请求等待处理,我不知道怎么能让所有人都睡不着持续5秒左右,然后再次恢复.

解决这个问题的正确方法是什么?我想听听快速解决方案以及良好的设计解决方案.

.net c# multithreading asynchronous async-await

2
推荐指数
1
解决办法
1778
查看次数

标签 统计

.net ×1

async-await ×1

asynchronous ×1

c# ×1

java ×1

multithreading ×1

throttling ×1