使用lightFM软件包的AWS Lambda

时间:2018-09-04 14:11:41

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

我有一个使用python和lightFM的AWS Lambda函数来获取产品推荐。其结构如下:

  • 使用泡菜加载lightFM模型
  • 通过AWS API Gateway接收参数
  • 对接收到的参数进行推断
  • 将最有可能的产品退还给该特定用户

问题在于,当它从LightFM类调用方法“预测”时,它会在AWS CloudWatch上退出并出现以下错误,并且没有堆栈跟踪:

REPORT RequestId: 31be3ec0-b04a-11e8-9805-e5d84a21cf93  Duration: 180.45 ms Billed Duration: 200 ms Memory Size: 1024 MB    Max Memory Used: 162 MB   
RequestId: 31be3ec0-b04a-11e8-9805-e5d84a21cf93 Process exited before completing request

更糟糕的是,有时Lambda函数可以完美运行。

通过以异步方式连续向Lambda函数连续发送许多请求(如果所有调用都是同步的,则没有错误),可以一次强制执行此错误。

第一次出现错误后,它将停止工作,直到我再次上载Lambda函数并对Lambda函数的内存配置进行一些更改。

有人知道cython和泡菜是否有问题,或者类似的问题?任何帮助表示赞赏。预先谢谢你。

2 个答案:

答案 0 :(得分:0)

行,

  

在完成请求之前退出流程

表示lambda引擎没有循环处理的事件。 您的代码没有进行回调,或者在回调链中缺少某个地方的回调。

在这种情况下,如果您使用lightFM程序包并等待该程序包中的回调,则它将永远不会被调用,并且在事件链中什么也没处理。

通常将其修复为使用promise并等待一定时间并处理超时并调用context.done或callback来完成此功能的方法。

希望有帮助。

答案 1 :(得分:0)

在lambda实际终止之前,我找不到终止它的原因,但是我找到了一种解决方法。我使用模型中的用户和项目表示法创建了自己的“预测”方法。