繁体   English   中英

如何在我的AWS EC2实例上处理多个Python请求?

[英]How can I handle multiple Python requests on my AWS EC2 instance?

我在Elastic Beanstalk上部署了Flask应用程序到AWS的EC2实例上。 如果同时有100个人连接到我的服务器,那是否不意味着他们必须在100个队列中等待,因为该应用一次只能处理一个实例?

如何做到这一点,以便使用相同的IP地址可以处理更多请求? 谢谢!

简短的答案是使用uWSGIgunicorn

更长的答案是您的直觉是正确的-您担心的是“并发”或您的应用程序可以处理的并发请求数。 是的,没有任何应用程序服务器的单个Flask应用程序一次可以处理一个请求。 您如何改变呢? 对于大多数Python应用程序,并发单位是一个过程(有些框架对此进行了更改,但是大多数应用程序部署可能是基于过程的)。 也就是说,您为自己认为需要的每个并发请求运行一个流程。 uWSGI之类的应用程序服务器会监听您的应用程序,然后将请求从池中分派到某个进程。 那么,您需要多少个流程?

您需要的第二个概念是“吞吐量”-在特定时间内可以处理多少个请求,这受“并发”影响但与之不同,直觉可能会误导您。 假设您有8个流程。 您可能会认为“但是我有100个用户,显然8个用户还不够”。 假设您知道每个请求都在1/8(.125)秒内完成。 这意味着每个进程每秒可以处理8个请求。 8次流程; 您的吞吐量大约为每秒64个请求。 8流程使您比原来预期的要更接近100个用户。 您的100个用户可能实际上不会在那一秒钟的窗口中发出请求。 可能,但不太可能。 问题不是并发,而是用户是否在合理的时间内得到响应。

希望这可以帮助。 扩展是一个很棒的话题-同时简单明了又令人沮丧。 随着流量的增加,上述指南将发生变化,您将需要越来越多的高级技术。 但要开始使用-保持简单并专注于基础知识。

请参阅单个Flask进程接收多少个并发请求?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM