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

一个Flask进程接收多少个并发请求?,第1张

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

在运行开发服务器时(这是通过运行获得的)

app.run()
,您将获得一个同步过程,这意味着一次最多处理一个请求。

通过将Gunicorn保留在其默认配置中并简单地增加Gunicorn的数量

--workers
,您得到的实际上是一些流程(由Gunicorn管理),每个流程的行为都类似于
app.run()
开发服务器。4个工作人员==
4个并发请求。这是因为Gunicorn
sync
默认使用其包含的工作程序类型。

重要的是要注意,Gunicorn还包括异步工作程序,即

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

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



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5673313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存