【发布时间】:2021-01-09 03:27:18
【问题描述】:
我有一个 Node.js Lambda 函数,它在初始运行期间运行良好,但是在随后的运行期间 - 1 分钟间隔 - 它在大约 1.5 毫秒内完成并且除了输出完成之外根本没有运行我的代码 - @ 987654321@ 在我的then 块中。
这是什么原因?
module.exports.perf = function(event, context, callback) {
context.callbackWaitsForEmptyEventLoop = false;
let input = JSON.parse(event.Records[0].body);
const point1 = new Point('elapsedTime')
.tag(input.monitorID, 'monitorID')
.floatField('elapsedTime', input.perf_value)
writeApi.writePoint(point1)
writeApi
.close()
.then(() => {
console.log('FINISHED ... ')
})
.catch(e => {
console.error(e)
if (e instanceof HttpError && e.statusCode === 401) {
console.log('Run ./onboarding.js to setup a new InfluxDB database.')
}
console.log('\nFinished ERROR')
})
return
};
编辑**
const writeApi = new InfluxDB({url: InfluxURL, token}).getWriteApi(org, bucket, 'ms')```
【问题讨论】:
-
你不应该在异步代码完成之前从函数中
return。 -
@Bergi 所以它不应该是异步的,因为我那里没有异步。而且我认为这不能解释为什么它会运行一次,但在那之后就不行了。
-
writeApi显然是异步的,因为它返回了一个承诺。 -
@Bergi 好的,我会测试一下看看,但我有信心就是这样,因为问题似乎并不指向异步
-
@Bergi 删除了,没有运气。自从我发布了这个问题之后,lambda 就没有运行过,我再次启动了计划,它运行了一次,它第二次和第三次运行了我在 OP 中提出的问题,即后续不运行我的代码运行。这似乎不是异步问题,而是与 lambda 如何处理我的代码有关的不同问题。
标签: javascript node.js amazon-web-services asynchronous aws-lambda