猫鼬请求无限挂起
Mongoose request infinite hang
上下文:
- Mongoose v4.7.6
- MongoDB v3.2.11
我正在尝试在我的软件中处理与我的数据库相关的错误。
我遇到了以下问题:当数据库断开连接时,mongoose 请求挂起,直到它重新连接。
事情是这样的:
- 我启动我的软件
- 它通过 mongoose
连接到数据库
- 我Ctrl+Cmongod进程
- 我从 mongoose
得到了 "Disconnect" 和 "Close" 事件
- 我发起了一个 find(...) 请求
- 查找请求挂起
到目前为止我已经尝试过:
我试图在我的架构中使用选项 bufferCommands 根据 documentation 应该使 mongoose return 一个错误,如果没有可用连接,但结果是一样的。
我的密码是什么?
mongoose.createConnection(..., {
server: {
// We disable reconnect from mongoose
auto_reconnect: false,
socketOptions: {
// For long running applictions it is often prudent to enable keepAlive.
// Without it, after some period of time you may start to
// see "connection closed" errors for what seems like no reason.
// From mongoose documentation
keepAlive: 1,
},
},
})
只要出现连接问题,就会直接从 mongoose 连接中抛出错误,您建立连接的主服务器有多种处理方法,具体取决于您的需要。
您进行的查找查询专门针对最终使用主连接对象的架构。您必须为自己和用户以这种方式处理它,您必须为他们发出的请求配置超时并向他们发送适当的响应。
根据超时取消请求
这可以在多个层面上完成,您的服务器逻辑、您的客户端或猫鼬本身。
按照这个人的回答用 mongoose 设置超时,显然 mongoose 没有正确记录。
对于服务器的逻辑,你可以为特定的请求创建一个系统,如果没有这个,然后用其他的东西将响应发送回客户端。
在客户端上,如果在特定时间内没有收到响应,则可以确定存在问题。
p.s默认有请求超时设置
上下文:
- Mongoose v4.7.6
- MongoDB v3.2.11
我正在尝试在我的软件中处理与我的数据库相关的错误。
我遇到了以下问题:当数据库断开连接时,mongoose 请求挂起,直到它重新连接。
事情是这样的:
- 我启动我的软件
- 它通过 mongoose 连接到数据库
- 我Ctrl+Cmongod进程
- 我从 mongoose 得到了 "Disconnect" 和 "Close" 事件
- 我发起了一个 find(...) 请求
- 查找请求挂起
到目前为止我已经尝试过:
我试图在我的架构中使用选项 bufferCommands 根据 documentation 应该使 mongoose return 一个错误,如果没有可用连接,但结果是一样的。
我的密码是什么?
mongoose.createConnection(..., {
server: {
// We disable reconnect from mongoose
auto_reconnect: false,
socketOptions: {
// For long running applictions it is often prudent to enable keepAlive.
// Without it, after some period of time you may start to
// see "connection closed" errors for what seems like no reason.
// From mongoose documentation
keepAlive: 1,
},
},
})
只要出现连接问题,就会直接从 mongoose 连接中抛出错误,您建立连接的主服务器有多种处理方法,具体取决于您的需要。
您进行的查找查询专门针对最终使用主连接对象的架构。您必须为自己和用户以这种方式处理它,您必须为他们发出的请求配置超时并向他们发送适当的响应。
根据超时取消请求
这可以在多个层面上完成,您的服务器逻辑、您的客户端或猫鼬本身。
按照这个人的回答用 mongoose 设置超时,显然 mongoose 没有正确记录。
对于服务器的逻辑,你可以为特定的请求创建一个系统,如果没有这个,然后用其他的东西将响应发送回客户端。
在客户端上,如果在特定时间内没有收到响应,则可以确定存在问题。
p.s默认有请求超时设置