【发布时间】:2016-12-11 09:55:19
【问题描述】:
我在 Node.js 中构建了一个非常稳定的机器人应用程序,它基本上可以不断地向 API 发送请求。为了确保不会出错,我会处理任何可能出现的错误,并为可能需要很长时间才能解决的 promise 设置了超时...
现在,我想通过移除我的安全网并监控异步操作以发现任何类型的“异步泄漏”来改进应用程序,例如承诺永远挂起或任何我不知道的奇怪结果(这就是重点我的问题)。
是否有任何用于监控 Node.js 异步流的工具?例如,在给定时间获取流程中未决承诺的总量?或者如果任何承诺的待处理时间超过给定时间,则会收到警告,并跟踪该承诺?
如果这可以指导答案,以下是我使用的模块:
// Bluebird (promises)
var Promise = require("bluebird");
// Mongoose with promises
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
// Rate limiter with promises
var Bottleneck = require("bottleneck");
// Promisified requests
var request = require('request-promise');
很抱歉无法准确地提出我的问题:我不知道我可以期待/希望什么...
编辑:到目前为止,我的研究使我:
- Bluebird's resource management tools,但我想不出办法让它们变得有用
- 令人惊叹的 npm monitor 和随附的监视器仪表板,但由于某种原因,我还不能让它满足我的需求...
由于我还在开发应用程序并且除了应用程序之外还有生活,我没有太多时间研究它,但我一定会在某个时候认真解决这个问题!
【问题讨论】:
-
如果您的每个异步操作都有超时,您不能只记录哪些操作超时,然后查看这些操作吗?
-
@jfriend00 :我可以,但我想知道是否有工具/插件/包/模块/方法设计用于监控目的,或者至少对此有帮助。我希望对这个过程有一个全局的概述,而不是一个一个地检查每一个异步路径......
-
IIRC 有一些专用的 Promise 库支持此类工具。比如RSVP had an awesome graphical promise monitor,不知道是怎么回事。如果您在网上搜索“javascript promise monitor”,您会发现大量的库。
标签: javascript node.js asynchronous promise bluebird