Django异步请求



Django有类似ASP的东西吗?. NET MVC的异步控制器?

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

澄清:

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

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))

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

  1. 与其等待请求完成,你可以返回状态"正在进行中",然后再发送一个请求来检查状态是否发生了变化。因为你在做纯粹的查找,响应将非常快,不会给你的web服务器带来太多负担。

  2. 您可以将此特定视图/功能外包给Tornado web服务器,该服务器专为异步回调而设计。

  3. 最有可能的解决方案应该不是技术,而是在UI/UX领域。

是的,你只能在任务完成后才可以做某事。你会想研究一种叫做chain()的东西。你可以在chain中绑定芹菜任务:

    chain = first_function.s(set) | second_Function.s(do)
    chain()

这两个函数first_function and second_function都是芹菜函数。只有当first_function执行完后,second_function才会执行

相关内容

  • 没有找到相关文章

最新更新