4

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

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

是否有某种方法可以在 Lambda 中发送 HTTP 请求,当请求完成时,结果会通过管道传输到新的 Lambda 函数中,这样就不需要 Lambda 函数一直等待并浪费资源?我不希望这样,因为我不确定这实际上是如何工作的 - 有没有人有其他想法来避免等待响应和浪费 Lambda 资源?

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

4

2 回答 2

1

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

  • 将 S3 数据源添加到您的 Algorithmia 帐户,并根据需要配置权限。

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

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

from Algorithmia.algorithm import OutputType

client.algo("username/algoname")
    .set_options(output=OutputType.void)
    .pipe(input)
于 2017-05-08T23:44:13.157 回答
0

您可以创建一个 Lambda 函数来不时调用 Algorithmia API,只是为您的主要处理函数“保持温暖”。您可以为此使用 Lambda 计划事件。

于 2017-05-07T14:34:11.313 回答