fs.writeFile()在nodejs中处理竞争条件吗?

时间:2018-06-14 06:23:53

标签: node.js race-condition fs writefile

在提问之前,我希望你对 aws-sqs 有基本的了解(虽然不是很必要)。

fs.writeFile()本身是否处理竞争条件?

我遇到过像

这样的实现
function getMessage(){
    sqs.receiveMessage( params , (err , data)=>{
        if(err) handle it;
        if(data.Messages){
            for(var i = 0 ;  i < data.Messages.length ; i++){
                fs.writeFile('./storage' , data.Messages[i].Body , (err)=>{
                    console.log('done');
                });
            }
        }
    })
}

for(var i = 0 ; i < 10000 ; i++){
    getMessage();
}

对于那些对代码感到困惑的人,基本上我是从SQS(有点数据库查询)中获取消息,然后在获取数据之后,我在'output'文件中编写它。 该程序每天运行两次,从sqs中获取近50万条消息。

所以,如果 fs 没有处理竞争条件,那么我需要连续进行。或者有更好的方法吗?

我对nodejs :)中的任何方法持开放态度。

1 个答案:

答案 0 :(得分:0)

我认为你应该连续运行它。 fs没有处理竞争条件。

参考这个答案(https://stackoverflow.com/a/21438964/6542250)。