AWS Lambda和Redis客户端。为什么我不能叫回叫?

我正在尝试编写一个使用Redis的AWS Lambda函数。当我运行以下代码时:

'use strict'

function handler (data, context, callback) {

const redis = require("redis")

const _ = require("lodash")

console.log('before client')

const client = redis.createClient({

url: 'redis://cache-url.euw1.cache.amazonaws.com:6379',

})

console.log('after client')

callback(null, {status: 'result'})

console.log('after callback')

}

exports.handler = handler

我有这样的答案:

{

"errorMessage": "2016-09-20T15:22:27.301Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da Task timed out after 3.00 seconds"

}

和日志看起来像:

17:22:24

START RequestId: 07d24e0b-7f46-11e6-85e9-e5f48906c0da Version: $LATEST

17:22:26

2016-09-20T15:22:26.014Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da before client

17:22:26

2016-09-20T15:22:26.134Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da after client

17:22:26

2016-09-20T15:22:26.135Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da after callback

17:22:27

END RequestId: 07d24e0b-7f46-11e6-85e9-e5f48906c0da

17:22:27

REPORT RequestId: 07d24e0b-7f46-11e6-85e9-e5f48906c0da Duration: 3001.81 ms Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 24 MB

17:22:27

2016-09-20T15:22:27.301Z 07d24e0b-7f46-11e6-85e9-e5f48906c0da Task timed out after 3.00 seconds

恕我直言,这意味着调用了回调,但没有任何反应。

删除客户端的初始化后,我会看到正确的响应。

有任何想法吗?

回答:

从官方文档中:

调用回调时,Lambda函数仅在Node.js事件循环为空之后退出。

由于您正在调用回调,但是您的Lambda函数调用并未结束,因此看来事件循环上还有些东西。除了创建Redis连接之外,您的功能实际上没有做任何事情。我猜想您需要在完成Redis连接后关闭它,以便清除事件循环并允许Lambda调用完成。

以上是 AWS Lambda和Redis客户端。为什么我不能叫回叫? 的全部内容, 来源链接: utcz.com/qa/411487.html

回到顶部