gpt4 book ai didi

node.js - AWS Lambda 中的流转换导致结束后写入错误

转载 作者:搜寻专家 更新时间:2023-11-01 00:14:36 25 4
gpt4 key购买 nike

我正在尝试使用 Fastcsv nodejs 包转换 CSV 文件。有趣的是,代码片段在我的系统上本地运行良好。但是,如果我尝试将它与 AWS lambda 程序集成,它会给出结束后写入错误。

var stream = fs.createReadStream(s3EventInfo.inputDownloadLoc)
.pipe(csv.parse({headers: true}))
//pipe the parsed input into a csv formatter
.pipe(csv.format({headers: true}))
//Using the transfrom function from the formatting stream
.transform(function(row, next){
transformLine(row, next);
})
.pipe(fs.createWriteStream(s3EventInfo.outputFileLoc))
.on("end", function(){
callback();
});

这是 aws 日志中的错误..

Error: write after end
at writeAfterEnd (_stream_writable.js:133:12)
at PassThrough.Writable.write (_stream_writable.js:181:5)
at write (_stream_readable.js:602:24)
at flow (_stream_readable.js:611:7)
at _stream_readable.js:579:7
at process._tickDomainCallback (node.js:486:13)

请帮助理解和解决问题。

最佳答案

Lambda 函数按需部署和运行,但如果现有实例尚未被销毁,则对同一 lambda 函数的额外调用可以在现有实例上运行。您无法控制它,但您需要确保您的代码能够正确处理它。

如果您的流是在全局范围内定义的,那么您的问题是那些后续调用正在重用已经收到“结束”事件的流。

您需要封装流,以便为每次调用实例化新流。

关于node.js - AWS Lambda 中的流转换导致结束后写入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33578998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com