在timout上从node.js获取栈回溯?
我正在使用node.js与域和cluster
捕捉意外的exception(程序员错误),然后重新正常启动。 然而,我们偶尔.catch().finally()
程序员不能添加最后的.catch().finally()
来确保他们的代码实际返回。
我可以很容易地添加一个超时,在预先指定的时间之后抛出一个exception,以确保这些不好的请求不会永远活着。 但是我想要做的是让超时信息从域中解脱出来,以解释请求中发生了什么,这样我们就可以得到一个日志/通知/无论从哪个开始, 。
有没有合理的方法来做到这一点?
如果是这样的话,我们使用express
作为框架, express-domain-middleware
来获取域/重启逻辑,并承诺asynchronous逻辑。
你并不需要这个域名。 如果使用承诺库(如蓝鸟,或者甚至是Q)或最近版本的Node(即io.js),则不必记住在所有链上使用.catch
并使用专用事件:
process.on("unhandledRejection", function(e, reason){ // promise was rejected, even if no `catch` or `finally` attached // restart the process });
请注意,域名已被弃用,并可能在未来版本的NodeJS中被删除,如果您使用的是承诺,那么您已经具备了安全性,所以就是这样。