gpt4 book ai didi

c# - 在 ASP.NET Web API 中立即返回 HTTP 响应

转载 作者:太空狗 更新时间:2023-10-29 21:17:29 24 4
gpt4 key购买 nike

我正在做一个 WebAPI2 项目来收集一些数据,我想弄清楚如何减少 API 方法的响应时间。

我有一个 JavaScript 函数可以将信息发布到我的 API。我的 API 接收此信息,将其插入数据库,然后返回 HTTP Accepted。

假设有 5 秒的等待时间来完成数据处理

// POST api/<controller>
public HttpResponseMessage Post([FromBody]string value)
{
//This represents 5000 milliseconds of work
System.Threading.Thread.Sleep(5000);

return new HttpResponseMessage(HttpStatusCode.Accepted);

}

这意味着,当我的 JavaScript 函数调用 Post 方法时,它会等待 5 秒以等待响应。

有没有一种方法可以立即返回 HTTP Accepted 响应,然后继续处理我的数据?

从 lilo.jacob 更新解决方案

好的,我已经使用下面找到的线程解决方案更新了我的方法。这是新代码

// POST api/<controller>
public HttpResponseMessage Post([FromBody]string value)
{
new System.Threading.Tasks.Task(() =>
{
//This represents 5000 milliseconds of work
System.Threading.Thread.Sleep(5000);
}).Start();

return new HttpResponseMessage(HttpStatusCode.Accepted);
}

响应几乎立即返回,这正是我要找的。以下是 Fiddler 的一些结果,显示了响应时间的变化 Response time in Fiddler

第一个响应显示了 WebAPI 在启动时的滞后,请求 4、5 和 7 使用线程并在彼此之后立即触发。响应 11 显示相同的请求没有启用线程,请注意 5 秒的延迟。

非常酷、干净、精简的问题解决方案。

最佳答案

您可以尝试在单独的线程中执行您的“昂贵”代码。

它会是这样的:

// POST api/<controller>
public HttpResponseMessage Post([FromBody]string value)
{
new System.Threading.Tasks.Task(() =>
{
//insert to db code;
}).Start();

return new HttpResponseMessage(HttpStatusCode.OK);

}

关于c# - 在 ASP.NET Web API 中立即返回 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com