运行django-plotly-dash时,我有多个python页面。问题是当我加载其中一个页面时,它正在运行一些计算,我不能运行同一个页面或来自不同会话的其他页面,并且Web服务器没有为其他用户做出响应。如果我查看runserver的输出,它只忙碌呈现第一个请求。
pn9klfpd1#
如果我查看runserver的输出,它只忙碌呈现第一个请求。如果我理解正确的话,这意味着您使用的是Django的开发服务器,因此您正在开发中(如果您在生产中使用django-admin runserver,这是一个严重的问题)。现在是一个很好的时间来注意:不要在任何类似生产环境的环境中使用此服务器。它只用于开发。(我们从事的是制作Web框架的业务,而不是Web服务器。)Django的开发服务器应该是多线程的,并且支持并发请求。然而,根据我的经验,我也注意到它一次只能处理一个请求。我没有深入研究,但我认为这可能是由一个应用程序重写runserver命令并禁用多线程造成的。在开发过程中,这应该不是什么大问题。在生产中,您不会遇到这种阻塞,因为真实的的WSGI服务器,如gunicorn,将能够处理多个并发请求(假设它被配置为正确使用可用资源,并且硬件能够处理负载)。然而,如果您的页面实际上响应很慢,这对于加载页面的用户来说可能是个问题,并且还将需要更多的资源来处理更多的并发请求。这完全取决于“慢”是指2秒、5秒、30秒还是更长。减少响应时间在很大程度上取决于代码的瓶颈,可能包括:
django-admin runserver
1条答案
按热度按时间pn9klfpd1#
如果我查看runserver的输出,它只忙碌呈现第一个请求。
如果我理解正确的话,这意味着您使用的是Django的开发服务器,因此您正在开发中(如果您在生产中使用
django-admin runserver
,这是一个严重的问题)。现在是一个很好的时间来注意:不要在任何类似生产环境的环境中使用此服务器。它只用于开发。(我们从事的是制作Web框架的业务,而不是Web服务器。)
Django的开发服务器应该是多线程的,并且支持并发请求。然而,根据我的经验,我也注意到它一次只能处理一个请求。我没有深入研究,但我认为这可能是由一个应用程序重写runserver命令并禁用多线程造成的。
在开发过程中,这应该不是什么大问题。在生产中,您不会遇到这种阻塞,因为真实的的WSGI服务器,如gunicorn,将能够处理多个并发请求(假设它被配置为正确使用可用资源,并且硬件能够处理负载)。
然而,如果您的页面实际上响应很慢,这对于加载页面的用户来说可能是个问题,并且还将需要更多的资源来处理更多的并发请求。这完全取决于“慢”是指2秒、5秒、30秒还是更长。减少响应时间在很大程度上取决于代码的瓶颈,可能包括: