【问题标题】:ESOCKETTIMEDOUT with remote CouchDBESOCKETTIMEDOUT 与远程 CouchDB
【发布时间】:2017-08-30 23:51:50
【问题描述】:

我正在使用 docker 运行 CouchDB 服务器,并且正在尝试通过 Node 应用程序发布数据。

但我经常收到 ESOCKETTIMEDOUT 错误提示(并非总是如此)。

这是我打开与数据库的连接的方式:

var remoteDB = new PouchDB('http://localhost:5984/dsndatabase', {
  ajax: {
    cache: true,
    timeout: 40000 // I tried a lot of durations
  }
});

这是用于发送数据的代码:

exports.sendDatas = function(datas,db, time) {
  console.log('> Export vers CouchDB')
  db.bulkDocs(datas).then(function () {
    return db.allDocs({include_docs: true});
  }).then(function (){
    var elapsedTime = new Date().getTime() - time;
    console.log('> Export terminé en ', elapsedTime, ' ms');
  }).catch(function (err) {
    console.log(err);
  })
};

错误并非每次都出现,但我找不到模式。

而且,无论是否超时,我的所有数据都已成功加载到我的 CouchDB 中!

我看过很多关于这个问题的帖子,但没有一个能真正回答我的问题......

有什么想法吗?

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    好的,这似乎是一个真正的问题: https://github.com/pouchdb/pouchdb/issues/3550#issuecomment-75100690

    我认为您可以通过使用指数退避声明合理更长的超时值/重试逻辑来解决此问题。

    让我知道这是否适合您。

    【讨论】:

    • 我也很好奇你为什么打电话给db.allDocs({include_docs: true});。不是很重吗?您可以使用复制 API 发送您的文档。在那里,我读到了内置的重试机制。
    • 我删除了 .allDocs() 并将构造函数的超时选项设置为 1 分钟...现在似乎可以工作了...非常感谢
    • 欢迎 .. :) 如果您认为答案对您有帮助,请点赞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2015-01-09
    • 2011-05-11
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多