WSGI容器与AWS Lambda相关吗



我有一个基于Flask的web应用程序,它通过Zappa部署到AWS Lambda。一切都很好。

Flask文件上写着:

Flask的内置服务器虽然重量轻且易于使用,但不适合生产,因为它不能很好地扩展。这里记录了一些可用于在生产中正确运行Flask的选项。

在独立服务器上,Python是单线程的(全局解释器锁(GIL(等(,因此在没有适当注意和注意的情况下无法很好地处理多个请求。

在AWS Lambda(可能还有其他FaaS基础设施(上,每个HTTP请求都会得到一个单独的Python实例,因此GIL不是问题,Lambda通过使用多个函数调用来负责扩展。

因此,在AWS Lambda上运行时,是否强烈建议使用WGSI容器(Gunicorn、uWGSI等(?为什么?

我可以猜测一些因素可能是相关的,包括:

  • 成本
  • 资源(例如数据库连接(
  • Bug
  • 启动性能
  • 每个请求的开销

当文档谈到"Flask的内置服务器";,它谈论的是当您运行命令flask run时(或者在运行命令(如python my_application.py(的旧应用程序中,在主函数(如app.run()(中有一行(所获得的服务器。

当你在Lambda上运行flask(使用Zappa或其他解决方案,如aws-wsgi或无服务器wsgi(时,你根本没有使用flask的内置服务器或任何服务器;包装器代码(在Zappa或其他任何代码中(正在将lambda事件转换为对WSGI应用程序的调用。

由于没有实际的WSGI服务器,因此不可能使用Gunicorn、uWGSI等(嗯,这可能是可能的,但会非常复杂(。

相关内容

  • 没有找到相关文章

最新更新