gpt4 book ai didi

Django 异步请求

转载 作者:行者123 更新时间:2023-12-04 05:00:54 24 4
gpt4 key购买 nike

Django 是否有类似于 ASP.NET MVC 的 Asynchronous Controller ?

我有一些请求将由 celery 工作人员处理,但不会花费很长时间(几秒钟)。我希望客户在工作完成后得到响应。我可以让我的 View 函数等待任务完成,但我担心它会给网络服务器带来太多负担。

澄清:

这是我今天可以拥有的流量

def my_view(request):
async = my_task.delay(params)
result = async.get()
return my_response(result)
async.get()可能需要几秒钟 - 不会太长,以便客户端无法等待 HTTP 响应返回。

此代码可能会给服务器带来不必要的压力。什么 ASP.NET MVC AsynchronousController提供了将这个函数一分为二的能力,类似于:
def my_view(request):
async = my_task.delay(params)
return DelayedResponse(async, lambda result=>my_response(result))

这会释放网络服务器来处理其他请求,直到异步操作完成。完成后,它将对结果执行 lambda 表达式,返回响应。

最佳答案

  • 您可以不等待请求完成,而是返回“进行中”状态,然后再发送一个请求以检查状态是否已更改。由于您进行的是纯查找,因此响应速度会非常快,并且不会给您的 Web 服务器带来太多负担。
  • 您可以将此特定 View /功能外包给为异步回调设计的 Tornado Web 服务器。网站的其余部分可能会继续在 django 上运行。
  • 最有可能的解决方案应该不是技术性的,而是在 UI/UX 领域。如果某些事情需要很长时间,如果通知明确,可以通知用户。
  • 关于Django 异步请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164409/

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