处理MongoDB中的(长期)连接中断



我正在编写一个使用存储的web应用程序。如果客户端在30秒内没有收到响应,则会认为请求已终止,并给出超时错误。

我正试图让MongoDB做同样的事情。例如,如果连接中断1分钟,驱动程序将尝试重新连接,并将客户端的请求挂起,直到重新连接成功。所以,像socketTimeoutMS(我设法开始工作)这样的东西在这里并不有效。

MongoDB在N秒后"放弃"请求的最佳方法是什么?

我最不想做的就是给客户端一个超时错误——服务器实际上在5分钟后完成了请求!

2.6中引入了maxTimeMS选项:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
    // Get an aggregation cursor
    var cursor = db.collection('data')
        .find("$where": "sleep(1000) || true")
        .maxTimeMS(50);
    // Get alll the items
    cursor.toArray(function(err, items) {
        console.dir(err);
        console.dir(items);
        db.close();
    });
});

相关内容

  • 没有找到相关文章

最新更新