我遇到了一个非常奇怪的问题。我正在导入一些大的 xml 文件并将它们存储到 mongoDB 中。该算法是一个典型的异步循环:
doLoop = function( it, callback_loop ) {
if( it < no_of_items ) {
storeToMongo( ..., function( err, result ) {
...
doLoop( it+1, callback_loop );
});
} else {
callback_loop();
}
};
doLoop( 0, function() {
...
});
现在(代码突然没有任何显着变化)我在执行循环时收到以下错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect EADDRNOTAVAIL
at errnoException (net.js:901:11)
at connect (net.js:764:19)
at net.js:842:9
at dns.js:72:18
at process._tickCallback (node.js:415:13)
大约一分钟后发生错误。在此期间处理的项目数量始终相同,但并不完全相同。
我试图找出connect/net
导致错误的原因,但我迷路了。我的代码中没有套接字连接。我有一个到 redis 的连接,但没关系是 mongoDB 连接吗?但是为什么会突然丢失呢?
唯一有助于运行整个循环的是在 mongo-callback 中执行递归循环调用,如下所示:
setTimeout( function() {
doLoop( it+1, callback_loop );
},1);
有谁知道这里出了什么问题?
谢谢,海诺布