首页 > 解决方案 > 如何在 django 中执行异步任务?

问题描述

假设我需要请求多个服务器做出响应

def view_or_viewset(request):

  d1 = request_a_server() # something like requests.get(url, data)
  d2 = request_b_server()
  d3 = request_c_server()

  d4 = do_something_with(d3)

  return Response({"foo1": d1, "foo2": d2, "foo3": d3, "foo4": d4})

我正在为每个请求做同步请求,我想必须有更好的方法来处理这种情况..

(如果任务很长,我会使用 celery,但事实并非如此,仍然执行多个同步请求似乎不正确)

处理此问题的推荐范式(?)是什么?

我期待使用asyncoraioHttpyield(?)

我的问题被标记为可能重复,那里的答案建议使用线程。我认为手动处理线程是可以避免的(根据我过去在 C++ 中使用多线程的经验)

然后我发现https://stackoverflow.com/a/23902034/433570 request-future 在这里似乎很有希望..

标签: pythondjangoasynchronous

解决方案


推荐阅读