afa*_*dge 4 wsgi flask zappa aws-lambda
我有一个基于 Flask 的 Web 应用程序,可以通过 Zappa 部署到 AWS Lambda。一切都很好。
\nFlask 文档说:
\n\n\n虽然轻量且易于使用,但 Flask\xe2\x80\x99s 内置服务器不适合生产,因为它\xe2\x80\x99t 不能很好地扩展。此处记录了一些可用于在生产中正确运行 Flask 的选项。
\n
在独立服务器上,Python 是单线程的(全局解释器锁(GIL)等),因此如果没有应有的谨慎和注意,就无法很好地处理多个请求。
\n在 AWS Lambda(可能还有其他 FaaS 基础设施)上,每个 HTTP 请求都会获得一个单独的 Python 实例,因此 GIL 不是问题,并且 Lambda 通过使用多个函数调用来负责扩展。
\n因此,在 AWS Lambda 上运行时,是否强烈建议使用 WGSI 容器(Gunicorn、uWGSI 等)?为什么或者为什么不?
\n我猜测可能相关的一些因素包括:
\n当文档谈到“Flask 的内置服务器”时,它指的是运行命令时获得的服务器flask run
(或者在较旧的应用程序中运行命令,例如python my_application.py
在主函数中使用一行命令,如app.run()
)。
当您在 Lambda 上运行 Flask(使用 Zappa 或其他解决方案,如aws-wsgi或serverless-wsgi)时,您根本没有使用 Flask 的内置服务器或任何服务器;包装器代码(在 Zappa 或其他任何代码中)将 lambda 事件转换为对 WSGI 应用程序的调用。
由于没有实际的 WSGI 服务器,因此不可能使用 Gunicorn、uWGSI 等(嗯,可能是可能的,但会非常复杂)。
归档时间: |
|
查看次数: |
2428 次 |
最近记录: |