执行非阻塞请求? - Django

Rad*_*Hex 11 python django asynchronous nonblocking

我最近一直在玩其他框架,比如NodeJS.

我喜欢返回响应的可能性,并且仍然能够进行进一步的操作.

例如

def view(request):
  do_something()
  return HttpResponse()

  do_more_stuff() #not possible!!!
Run Code Online (Sandbox Code Playgroud)

也许Django已经提供了一种在返回请求后执行操作的方法,如果情况很好的话.


非常感谢帮助!= d

Ros*_*oss 10

你没有开箱即用,因为你已经退出了这个方法.您可以使用像Celery这样的东西将do_more_stuff任务传递到队列,然后让它do_more_stuff()在http请求/响应流之外运行.


Zac*_*ack 7

Django允许您使用信号完成此操作,可在此处找到更多信息.(请注意,正如我在下面的评论中所说,信号不是非阻塞的,但它们允许您在视图中返回响应后执行代码.)

如果您正在考虑做许多异步请求并且需要它们是非阻塞的,那么您可能需要查看Tornado.