Django 为什么在web应用程序中使用消息队列

Django 为什么在web应用程序中使用消息队列,django,httprequest,message-queue,Django,Httprequest,Message Queue,在使用Django开发web应用程序时,我遇到了一个问题,当我在本地调用某些函数时,它们工作正常,但一旦通过HTTP请求调用它们,它们就不会被执行。 我四处询问,他们告诉我在请求-响应周期之外使用芹菜和消息队列服务器异步执行它们,它工作得很好,但我仍然不明白为什么我必须异步执行某些任务,即使我没有竞争条件,而且只有一个客户机调用web服务。 这对我来说是一个很大的黑点,因为我不知道怎么做就成功了。 谁能给我解释一下吗 谢谢 我所知道的基于队列的系统的两个主要好处是: 首先,可以向客户机提供响应,

在使用Django开发web应用程序时,我遇到了一个问题,当我在本地调用某些函数时,它们工作正常,但一旦通过HTTP请求调用它们,它们就不会被执行。 我四处询问,他们告诉我在请求-响应周期之外使用芹菜和消息队列服务器异步执行它们,它工作得很好,但我仍然不明白为什么我必须异步执行某些任务,即使我没有竞争条件,而且只有一个客户机调用web服务。 这对我来说是一个很大的黑点,因为我不知道怎么做就成功了。 谁能给我解释一下吗


谢谢

我所知道的基于队列的系统的两个主要好处是:

首先,可以向客户机提供响应,而无需等待工作完成。这使页面加载速度更快,客户机等待时间更短


其次,队列为多个工作人员可以从中提取的计划作业提供了一个中心位置。如果应用程序的某个组件无法跟上需要完成的工作量(或者由于某种原因失败),您可以让该组件的其他实例来完成该工作,并且可以在一个地方找到需要完成的所有工作。

您可以显示一些代码和您的问题吗?def comp(请求):p=subprocess.Popen(['javac',filepath],stdout=subprocess.PIPE,stderr=subprocess.PIPE,bufsize=100)res,err=p.communicate()返回HttpResponse(err)当我通过http调用此应用程序时,它不起作用,直到我使用芹菜并定义了一个任务,在该任务中,我在请求/响应周期之外执行编译使用开发服务器时它起作用了吗?谢谢您的回答,但是我调用的函数是编译一个.java文件,其中编写了一个简单的hello world,我不认为这是一个很大的工作量,也没有理由失败,但是当在本地调用它时,它就工作了,当它处于请求/响应周期时,它就不工作了t@JPR回答你的问题。如果您真正想要的答案是“为什么这个函数不能在HTTP上工作,但在从芹菜调用时可以工作”这个问题,那么您需要将其作为您的问题。