AWS Lambda:处理程序是同步还是异步是否重要,w.r.t。并发调用?

AWS Lambda: does it matter if handlers are sync vs async, w.r.t. concurrent calls?

对于 AWS Lambda 处理程序,代码是异步还是同步(例如 async def 还是 def)对于多次调用该 Lambda 函数的并发性能有影响吗?也就是说,如果我编写一个同步函数,由于 AWS 内部处理来自单独调用的 Lambda 调用的方式,该函数是否会被“异步”调用无论如何?或者该函数将开始处理 UserA,并将 UserB 的请求排队直到它完成 UserA?

背景故事:我正在编写一些 Python + SQLAlchemy Lambda 函数。 SQLAlchemy 1.4 刚刚发布了 asyncio 支持,但我会有一些重写开销。我想知道我是否可以在 Lambda 上不考虑并发性而只编写传统的同步 Python 代码(对于自定义 Flask / FastAPI 代码,我肯定需要考虑并发性)。

如果您同时有多个调用 lambda 的请求,该服务将尝试 运行 多个 lambda 实例。由于 lambda 本身或帐户的并发限制,您可能 运行 受到限制。 Lambda 不会将对同一 lambda 函数的请求排队。一个函数永远不会一次处理多个请求。即使在系统提供排队机制来处理请求的情况下,它们也不是线程队列,就像您在服务器上可能拥有的那样。它们实际上只是一次通过一个请求调用 lambda 的内部 SQS 队列。