最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

异步队列永远不会触发随机排放

IT培训 admin 5浏览 0评论

异步队列永远不会触发随机排放

我继续玩nodejs。以下是我的launch.js应用程序的简短摘要

var counter = 0;
var queue = async.queue(function(objectWithVariousProperties, callback) {
    methodDoingVariousAsynchronousStuff(objectWithVariousProperties.link, function(err,result) 
        counter++;
        callback();
    });
}, 20);

queue.drain = function() {
    log.debug("Finished Queue", {
        "Objects processed" : counter
    });
};
//TO various iterations over several array and construct some object and then push them in the queue via 
queue.push(media_object)

我的问题是该过程有80%的时间是有效的。通过shell命令nodejs launch.js启动应用程序,处理队列,队列完成后显示“完成队列”然后返回shell。

但是,有时排水事件永远不会被触发,但应用程序完成并返回到shell而没有任何异常。我在几个小时内检查了我的代码,以确定是否有丢失的回调,但似乎并非如此。

任何可以解释这种奇怪的随机行为的想法?或者任何有助于找到泄漏代码的工具?

正如我所说,有时,队列处理超过10000个对象没有任何问题,有时当我启动它时,它只是不触发排水事件但过程停止(再次没有任何异常或错误或任何事情,只是正常停止)

我花了几个晚上试图找出原因,所以如果你们有任何想法,我们将很乐意接受。

回答如下:

我无法给你一个合适的答案,但可以帮助你调试你的代码。当node.js没有退出时,事件循环中还剩下一些东西。

这个工具可以帮助您找到它:https://github/mafintosh/why-is-node-running

我很确定你的问题可能属于methodDoingVariousAsynchronousStuff()中的某些东西 - async.queue代码看起来几乎没问题。

可能类似于未调用的回调,未处理的错误或开放的网络连接。

异步队列永远不会触发随机排放

我继续玩nodejs。以下是我的launch.js应用程序的简短摘要

var counter = 0;
var queue = async.queue(function(objectWithVariousProperties, callback) {
    methodDoingVariousAsynchronousStuff(objectWithVariousProperties.link, function(err,result) 
        counter++;
        callback();
    });
}, 20);

queue.drain = function() {
    log.debug("Finished Queue", {
        "Objects processed" : counter
    });
};
//TO various iterations over several array and construct some object and then push them in the queue via 
queue.push(media_object)

我的问题是该过程有80%的时间是有效的。通过shell命令nodejs launch.js启动应用程序,处理队列,队列完成后显示“完成队列”然后返回shell。

但是,有时排水事件永远不会被触发,但应用程序完成并返回到shell而没有任何异常。我在几个小时内检查了我的代码,以确定是否有丢失的回调,但似乎并非如此。

任何可以解释这种奇怪的随机行为的想法?或者任何有助于找到泄漏代码的工具?

正如我所说,有时,队列处理超过10000个对象没有任何问题,有时当我启动它时,它只是不触发排水事件但过程停止(再次没有任何异常或错误或任何事情,只是正常停止)

我花了几个晚上试图找出原因,所以如果你们有任何想法,我们将很乐意接受。

回答如下:

我无法给你一个合适的答案,但可以帮助你调试你的代码。当node.js没有退出时,事件循环中还剩下一些东西。

这个工具可以帮助您找到它:https://github/mafintosh/why-is-node-running

我很确定你的问题可能属于methodDoingVariousAsynchronousStuff()中的某些东西 - async.queue代码看起来几乎没问题。

可能类似于未调用的回调,未处理的错误或开放的网络连接。

发布评论

评论列表 (0)

  1. 暂无评论