我正在修改一个电子商务网站的购买过程,该网站具有一次购买多个用户和多个产品的能力。大型购买有时可能需要几分钟才能完成,而电子商务网站后端会使用户等待;不是很棒的用户体验。
我正在尝试使网站生成JSON字符串并将其踢到API,该API将在其他服务器上进行购买处理,并让网站继续在ThankYou页面上,而无需等待API的响应。我的挑战是,有时Post不能加入API。我在postasync之后放置了thread.sleep命令,这似乎可以解决本地计算机上的问题,但是我对该解决方案的可靠性感到担忧。
TLDR;我的目标是使代码可靠地将帖子发送到API,而无需等待结果。这是我以前一直在努力的事情,如果有最佳实践来获得结果,我将无法找到它。任何建议,将不胜感激。
请参见下面的邮政编码;没有任何幻想。代码位于电子商务后端的eventHandler函数中。
using (System.Net.Http.HttpClient client = new HttpClient(new HttpClientHandler(),false))
{
var url = ConfigurationManager.AppSettings["APIURL"];
var reqBody = new StringContent(RequestData.ToString(), Encoding.UTF8, "application/json");
var task = client.PostAsync(url, reqBody);
//increases chance of post reaching API before function ends
Thread.Sleep(3000);
}
可靠地将帖子发送到API,而无需等待结果
这是不可能的。可靠的代码requires await
。在没有await
的情况下调用异步方法是一种“一劳永逸”的形式,并且根据定义即发即弃代码不在乎操作是否(或是否)完成。
一种可能对您有用的替代方法是拥有一个可靠的队列,并写入that而不是写入API。然后有一个后台处理器从该队列读取并发布到API。