Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当根用户收到请求时,Django做什么?_Python_Django - Fatal编程技术网

Python 当根用户收到请求时,Django做什么?

Python 当根用户收到请求时,Django做什么?,python,django,Python,Django,我正在编写一个django web应用程序。我不明白它是如何同时工作的。基本上,我有一个需要10秒钟加载的页面(由于执行了大量python计算),还有一个需要1秒钟加载的页面,因为执行的python代码更少,并且立即返回index.html页面。 这是我在路由中提供的链接 本地主机:3000/10secondpage 本地主机:3000/1秒 我在浏览器上执行此操作: 打开第一个浏览器至localhost:3000/10secondpage,然后立即打开第二个浏览器至localhost:3000

我正在编写一个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已经有了一些内置的进程/线程生成


有人能解释一下为什么会发生这种行为吗

简单地说,它的线程

网络请求并不依赖于其他请求才能在您能够执行请求之前完成,如果是的话,那么将更新发布到facebook将需要数小时/数月/数年的时间,您的帖子才能真正生效

Django也不例外。为了同时处理一个页面可能接收到的任意数量的请求,它必须单独和异步地处理它们。当然,随着负载共享和类似技术的引入,这可能会变得非常复杂,但归根结底是相同的答案

您可以查看,以更详细地了解django如何处理此问题


注意:我没有尝试过这一点,但是为了观察您的预期输出,您可以使用标志运行
runserver


请注意,除了开发服务器之外,这与Django无关:是Web服务器本身—Apache、nginx或其他—处理多线程/进程。@DanielRoseman—同意,谢谢。在我小小的尝试中,我想我忽略了这一点:)
 manage.py runserver --nothreading