You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			|  | 4 years ago | |
|---|---|---|
| .. | ||
| examples | 4 years ago | |
| tests | 4 years ago | |
| .travis.yml | 4 years ago | |
| LICENCE | 4 years ago | |
| Makefile | 4 years ago | |
| Readme.md | 4 years ago | |
| package.json | 4 years ago | |
| qjobs.js | 4 years ago | |
		
			
				
				Readme.md
			
		
		
	
	qjobs
Efficient queue job manager module for nodejs.
Features
- Concurrency limiter
- Dynamic queue, a job can be added while the queue is running
- Optional delay before continuing after max concurrency has been reached
- Support of pause/unpause
- Events emitter based: start, end, sleep, continu, jobStart, jobEnd
- Quick statistic function, so you can know where the queue is, at regular interval
For what it can be usefull ?
Jobs which needs to run in parallels, but in a controled maner, example:
- Network scanners
- Parallels monitoring jobs
- Images/Videos related jobs
Compatibility :
- not tested with nodejs < 0.10
Examples
(take a look at tests directory if you are looking for running samples)
var qjobs = new require('./qjobs');
                                
// My non blocking main job     
var myjob = function(args,next) {
    setTimeout(function() {
        console.log('Do something interesting here',args);
        next();
    },1000);
}
var q = new qjobs({maxConcurrency:10});
// Let's add 30 job to the queue
for (var i = 0; i<30; i++) {
    q.add(myjob,[i,'test '+i]);
}
q.on('start',function() {
    console.log('Starting ...');
});
q.on('end',function() {
    console.log('... All jobs done');
});
q.on('jobStart',function(args) {
    console.log('jobStart',args);
});
q.on('jobEnd',function(args) {
    console.log('jobend',args);
    // If i'm jobId 10, then make a pause of 5 sec
    if (args._jobId == 10) {
        q.pause(true);
        setTimeout(function() {
            q.pause(false);
        },5000);
    }
});
q.on('pause',function(since) {
    console.log('in pause since '+since+' milliseconds');
});
q.on('unpause',function() {
    console.log('pause end, continu ..');
});
q.run();
//q.abort() will empty jobs list
