Python 3.x 当处理程序在AWS lambda中超时时,如何处理剩余的有效负载?

Python 3.x 当处理程序在AWS lambda中超时时,如何处理剩余的有效负载?,python-3.x,aws-lambda,python-3.6,python-3.7,aws-serverless,Python 3.x,Aws Lambda,Python 3.6,Python 3.7,Aws Serverless,我试图在AWS lambda中将数据从CSV转换为JSON(使用Python 3)。文件大小为65MB,因此在完成该过程之前会超时,并且整个执行get失败 我需要知道如何处理这样的情况,AWS Lambda应该能够在超时期间处理最大数据集,而剩余的有效负载应该保留在S3存储桶中 下面是转换代码 AWS Lambda功能配置: 内存:640MB 超时:15分钟由于您的功能超时,您只有两个选项: 增加分配的内存量。这也会增加分配给函数的CPU数量,因此它应该运行得更快。但是,这可能不足以避免超时 或

我试图在AWS lambda中将数据从CSV转换为JSON(使用Python 3)。文件大小为65MB,因此在完成该过程之前会超时,并且整个执行get失败

我需要知道如何处理这样的情况,AWS Lambda应该能够在超时期间处理最大数据集,而剩余的有效负载应该保留在S3存储桶中

下面是转换代码 AWS Lambda功能配置: 内存:640MB


超时:15分钟

由于您的功能超时,您只有两个选项:

  • 增加分配的内存量。这也会增加分配给函数的CPU数量,因此它应该运行得更快。但是,这可能不足以避免超时
  • 不要使用AWS Lambda
  • AWS Lambda函数最常见的用例是用于小型微服务,有时只运行几秒钟甚至几分之一秒

    如果您的用例运行超过15分钟,那么它可能不是AWS Lambda的好候选


    您可以选择在Amazon EC2实例上运行代码或使用Fargate容器。

    您的函数似乎内存不足:

    Memory Size: 1792 MB Max Memory Used: 1792
    
    此外,它只运行了12分钟:

    Duration: 723205.42 ms
    
    (723秒≈ (12分钟)

    因此,您应该:

    • 增加内存(但成本更高),或
    • 更改您的程序,这样,您就可以不在内存中累积JSON字符串,而是不断地将其写入本地磁盘文件
      /tmp/
      ,然后将生成的文件上载到Amazon S3

    但是,提供给AWS Lambda函数的最大磁盘存储空间为512MB,并且您的输出文件似乎比这个大。因此,增加内存将是唯一的选择。为Lambda函数分配更多资源所增加的费用表明,使用EC2或Fargate可能比使用Lambda更好。

    您是同步还是异步调用AWS Lambda函数?你的函数的超时时间是多少?转换性能是否受到可用CPU性能的限制?转换代码是什么样子的?AWS Lambda的最大超时时间为15分钟,在65 MB的文件中,您正在处理多少行?如果你能发布你的代码,我们也可以尝试一些优化。嗨@Dunedan和Hussain,我有代码更新和其他细节。。这是一个从csv到json的基本转换。。您能否提供执行此AWS Lambda函数产生的日志消息?如果将可用内存增加到1792MB,问题会消失吗?嗨@Dunedan。。以下是lambda执行报告RequestId:53abacf2-8484-2342347持续时间:723205.42毫秒计费持续时间:723300毫秒内存大小:1792 MB最大使用内存:1792 MB初始持续时间:252.77毫秒RequestId:53abacf2-8484312312错误:运行时退出,错误:信号:killed Runtime.exitror
    Duration: 723205.42 ms