我正在编写一个与 Azure Cosmos DB 交互的应用程序。我需要在会话中向 CosmosDB 提交 30,000 条记录。因为我使用了 .NET Core,所以我不能使用 BulkInsert dll。所以,我使用 Foreach 循环插入到 CosmosDB。但是我看到每秒请求太多并且它使 CosmosDB 的 RU 限制过载。
foreach(item in listNeedInsert){
await RequestInsertToCosmosDB(item);
}
当请求数达到 100 时,我想暂停 foreach 循环。完成 100 个请求后。foreach 将继续。
您可以对列表进行分区并等待结果:
var tasks = new List<Task>();
foreach(item in listNeedInsert)
{
var task = RequestInsertToCosmosDB(item);
tasks.Add(task);
if(tasks.Count == 100)
{
await Task.WhenAll(tasks);
tasks.Clear();
}
}
// Wait for anything left to finish
await Task.WhenAll(tasks);
每次运行 100 个任务时,代码都会等待它们全部完成,然后再执行最后一批。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句