Python 当根用户收到请求时,Django做什么?
我正在编写一个django web应用程序。我不明白它是如何同时工作的。基本上,我有一个需要10秒钟加载的页面(由于执行了大量python计算),还有一个需要1秒钟加载的页面,因为执行的python代码更少,并且立即返回index.html页面。 这是我在路由中提供的链接 本地主机:3000/10secondpage 本地主机:3000/1秒 我在浏览器上执行此操作: 打开第一个浏览器至localhost:3000/10secondpage,然后立即打开第二个浏览器至localhost:3000/1secondpage 因为我只在带有1个终端的localhost上运行它,所以这是我所期望的行为 预期行为: python代码执行第一个浏览器的请求,需要10秒钟才能完成,完成后,它立即启动第二个浏览器的请求,大约需要1秒钟才能完成。因此,第二个浏览器总共需要等待大约11秒,因为它需要等待第一个浏览器的请求首先完成 实际行为: 然而,实际的行为是,尽管在第一个浏览器之后执行,第二个浏览器还是首先完成了它的请求。这表明django已经有了一些内置的进程/线程生成Python 当根用户收到请求时,Django做什么?,python,django,Python,Django,我正在编写一个django web应用程序。我不明白它是如何同时工作的。基本上,我有一个需要10秒钟加载的页面(由于执行了大量python计算),还有一个需要1秒钟加载的页面,因为执行的python代码更少,并且立即返回index.html页面。 这是我在路由中提供的链接 本地主机:3000/10secondpage 本地主机:3000/1秒 我在浏览器上执行此操作: 打开第一个浏览器至localhost:3000/10secondpage,然后立即打开第二个浏览器至localhost:3000
有人能解释一下为什么会发生这种行为吗 简单地说,它的线程 网络请求并不依赖于其他请求才能在您能够执行请求之前完成,如果是的话,那么将更新发布到facebook将需要数小时/数月/数年的时间,您的帖子才能真正生效 Django也不例外。为了同时处理一个页面可能接收到的任意数量的请求,它必须单独和异步地处理它们。当然,随着负载共享和类似技术的引入,这可能会变得非常复杂,但归根结底是相同的答案 您可以查看,以更详细地了解django如何处理此问题
注意:我没有尝试过这一点,但是为了观察您的预期输出,您可以使用标志运行
runserver
请注意,除了开发服务器之外,这与Django无关:是Web服务器本身—Apache、nginx或其他—处理多线程/进程。@DanielRoseman—同意,谢谢。在我小小的尝试中,我想我忽略了这一点:)
manage.py runserver --nothreading