当前位置: 首页 > 面试题库 >

一个Flask进程接收多少个并发请求?

金承嗣
2023-03-14
问题内容

我正在用Flask构建一个应用程序,但是我对WSGI并不太了解,它是基于HTTP的Werkzeug。当我开始使用gunicorn和4个工作进程处理Flask应用程序时,这是否意味着我可以处理4个并发请求?

我的意思是并发请求,而不是每秒的请求或其他任何请求。


问题答案:

运行开发服务器时,你将运行app.run(),你将获得一个同步过程,这意味着一次最多处理1个请求。

通过在默认配置下将Gunicorn放在其前面并简单地增加的数量–workers,你得到的实际上是一些流程(由Gunicorn管理),每个流程的行为都类似于app.run()开发服务器。4个工作人员== 4个并发请求。这是因为Gunicorn sync默认使用其包含的工作程序类型。

重要的是要注意,Gunicorn还包含异步工作程序,即eventletgevent(以及tornado,但似乎最好与Tornado框架一起使用)。通过使用–worker-class标志指定这些异步工作程序之一,你将获得Gunicorn管理多个异步进程的信息,每个进程都管理自己的并发性。这些进程不使用线程,而是协程。基本上,在每个进程中,一次只能发生1件事(一个线程),但是当对象等待外部进程完成(例如数据库查询或等待网络I / O)时,它们可以被“暂停”。

这意味着,如果你使用的是Gunicorn的异步工作程序之一,则每个工作程序一次最多可以处理多个请求。多少工人才是最好的,取决于你的应用程序的性质,其环境,运行的硬件等。有关更多详细信息,请参见Gunicorn的设计页面,以及有关gevent的介绍页面的说明。



 类似资料:
  • 我对连接池的理解是;如果connectionstring完全相同,那么我们重用该连接,而不是建立新的连接。 我的问题是,我正在为并行处理创建许多线程。在这个“虚拟”程序中,我创建了500个线程,并让线程池函数处理这些线程。 步骤是: > < li> 每个线程在SQL中创建一个更新表。(说明更新的时间戳) 然后线程Hibernate1到10秒(随机)。 最后,线程在 SQL 中进行另一次更新(说明结

  • 问题内容: 我想知道您是否有关于websocket的并发连接的任何数据?我在Node.js服务器上使用Socket.io。有多少个客户端可以连接到套接字并接收数据而无需关闭我的服务器?1000?1000.0000? 谢谢! 问题答案: 这在很大程度上取决于您的硬件配置,您在服务器端究竟在做什么/处理什么以及您的系统是否针对许多并发连接进行了优化。例如,默认情况下,在Linux计算机上,您可能首先会

  • 我正在使用Spring Boot构建一个RESTful web服务。我的IDE是Eclipse Oxygen。 这里是我的控制器代码: 我的控制台输出是: 控制台输出显示每5秒调用一次控制器。但我每隔两秒就发送一次请求。 是否可以接受来自同一会话的并发多个请求? 谢谢!

  • 现在,我希望交错控制器的一个选项为同一个用户激发两个或三个并发请求,并在每个请求中发送相同的cookie。 我如何做到这一点?

  • 我正在模拟一个银行系统,其中我有10万个交易要运行。每种类型的事务实现runnable,我有各种类型的事务可以发生。 是一个运行库数组。 理想情况下,下面的代码可以解决我的问题: 每次运行此事务时,只有一个帐户被锁定,剩下9个帐户可供处理。为什么JVM不再处理任何线程,而是挂起直到这个长事务完成? 下面是一个指向该项目的简化版本的链接,以演示该问题:project

  • 问题内容: 我的Flask应用程序必须进行大量计算才能获取特定页面。在Flask执行该功能时,其他用户无法访问该网站,因为Flask忙于进行大量计算。 有什么方法可以使我的Flask应用程序接受来自多个用户的请求? 问题答案: 是的,将应用程序部署在其他WSGI服务器上,请参阅Flask部署选项文档。 Flask随附的服务器组件实际上仅用于开发应用程序时;即使可以将其配置为处理并发请求(从Flas