python - AWS Lambda 长时间运行的 http 请求

标签 python amazon-web-services lambda aws-lambda algorithmia

我有一个 AWS Lambda 函数,它在 Algorithmia 上调用深度学习函数,对结果进行一些后处理,然后返回一些数据。 Algorithmia 提供了一个 python client我正在使用它只是让向 Algorithmia 平台上的算法发送请求变得更容易一些。

问题如下:当一个 Algorithmia 函数有一段时间没有被调用时,它被卸载并且第一次调用来预热它(冷启动)需要一段时间,可能需要 30 秒。如果我的 Lambda 函数在冷启动时恰好触发 Algorithmia 函数时要等待 30 秒的响应,那将是非常昂贵和浪费的。

有没有什么方法可以在 Lambda 中发送 HTTP 请求,并在请求完成后将结果通过管道传输到新的 Lambda 函数中,从而不需要 Lambda 函数一直等待并浪费资源?我预计不会,因为我不确定这将如何实际工作 - 关于如何避免等待响应和浪费 Lambda 资源,是否有人有其他想法?

编辑:在大多数情况下(显然 Algorithmia 算法需要一段时间才能从冷启动加载的情况除外)延迟是一个问题,我无法通过采取一些解决方法来增加延迟方法与 Algorithmia 函数写入它对 S3 的响应(例如),然后触发 Lambda 函数。

最佳答案

许多输出文件的 Algorithmia 函数允许您指定输出位置(通常是输入 JSON 的 output 参数)。如果该假设适用于您的情况,那么您可以让 Algorithmia 函数直接写入 S3 存储桶并让 S3 触发单独的 lambda 函数。该过程如下所示:

  • Add an S3 data source到您的 Algorithmia 帐户,并根据您的需要配置权限。

  • 调用算法时,将输出参数设置为使用该 S3 数据源,例如“输出”:“s3://algorithm-name/sample-0001.png”

  • 配置 Algorithmia 的 python 客户端以忽略输出。这会导致请求立即返回,而不是等待函数完成:

from Algorithmia.algorithm import OutputType

client.algo("username/algoname")
    .set_options(output=OutputType.void)
    .pipe(input)

关于python - AWS Lambda 长时间运行的 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43828054/

相关文章:

python - Django的ImageField中如何重命名当前,清除和更改标签

amazon-web-services - 如何使用包 AWSS3.jl 连接到在 EC2 实例上运行的 S3 存储桶?

amazon-web-services - 使用图像响应卡时出现 AWS LexV2 CDK/CloudFormation 错误

c# - 从 Expression<Func<IMyclass, int>> 创建 setter Expression<Action<object, object>>

python - 您将如何确定 Python 类的每个属性和方法的定义位置?

python - 如何使用python加载Mysql到Elasticsearch

python - 寻找 `SupportsRound` 的工作示例

amazon-web-services - 如何在 7 天内自动忽略 AWS CodePipeline Approval

c++ - 如何仅使用 Element 成员函数和 STL 来累积容器中 Element 成员函数的结果?

python - Boto3 Python Lambda 自定义返回错误