WSGI 容器与 AWS Lambda 相关吗?

Is a WSGI container relevant on AWS Lambda?

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

Flask documentation 说:

While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well. Some of the options available for properly running Flask in production are documented here.

在独立服务器上,Python 是单线程的(全局解释器锁 (GIL) 等),因此如果不小心和注意就不能很好地处理多个请求。

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

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

我猜可能相关的一些因素包括:

当文档谈到“Flask 的内置服务器”时,它是在谈论当您 运行 命令 flask run (或在 older applications running 命令中获得的服务器像 python my_application.py 在主函数中有一行像 app.run()).

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

由于没有实际的 WSGI 服务器,因此无法使用 Gunicorn、uWGSI 等(好吧,也许可以,但会很复杂)。