如何解决来自ASP.net Web API的异步API调用会打开多个线程
我正在从事电子商务API集成,因此我需要每天发布电子商务门户中列出的每个SKU的销售价格。 SKU数以千计(截至目前为2千,并且可能会增加)。 SKU的售价每天都在变化,我可以通过调用价格更新API来一次更新一个SKU的售价(价格更新API由电子商务门户提供,我不能更改)。
价格更新API调用大约需要2.0秒,而更新2000 SKU价格将消耗4000秒,这是不可接受的。
我的每秒事务(TPS)限制为100,可以进行100次异步调用以更新SKU价格。 这是Web API Controller方法的代码片段:
//Model Class
public class SKUPrices
{
public string skuId { get; set; }
public decimal sellingPrice { get; set; }
}
//Controller method
public async Task<HttpResponseMessage> UpdateAllSkuPrices(List<SKUPrices> skuPrices)
{
List<string> errorList = new List<string>();
foreach(var price in skuPrices) {
string error = await UpdatePriceAysncRestApiCall(price);//This will invoke the RESTful API and update the selling price of the given Sku
if (error != null)
errorList.Add(error);
}
if (errorList.Count() > 0)
return Request.CreateResponse(HttpStatusCode.BadRequest,errorList);
else
return Request.CreateResponse(HttpStatusCode.OK);
}
我对线程部分的知识有限。我们可以一次从skuPrices列表中获取100条记录,并异步执行100个UpdatePriceAysncRestApiCall
API调用,并继续直到所有价格更新。如果有任何错误,则必须填充errorList并将其抛出响应。
由于我不熟悉线程技术,因此我担心使用Parallel.ForEach
方法。请帮帮我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。