Django 是否有类似于 ASP.NET MVC 的异步控制器的东西?
我有一些请求将由芹菜工人处理,但不会花费很长时间(几秒钟)。我希望客户在工作人员完成后得到响应。我可以让我的视图功能等待任务完成,但我担心它会给网络服务器带来太多负担。
澄清:
这是我今天可以拥有的流程
def my_view(request):
async = my_task.delay(params)
result = async.get()
return my_response(result)
async.get()
可能需要几秒钟——不要太长,以免客户端无法等待 HTTP 响应返回。
此代码可能会给服务器带来不必要的压力。ASP.NET MVCAsynchronousController
提供的是将这个函数分成两部分的能力,类似于:
def my_view(request):
async = my_task.delay(params)
return DelayedResponse(async, lambda result=>my_response(result))
这将释放 Web 服务器以处理其他请求,直到异步操作完成。完成后,它将对结果执行 lambda 表达式,并返回响应。