Socket
Socket
Sign inDemoInstall

worker-farm

Package Overview
Dependencies
2
Maintainers
2
Versions
22
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.5.4 to 1.6.0

.editorconfig

2

examples/basic/child.js

@@ -5,2 +5,2 @@ 'use strict'

callback(null, inp + ' BAR (' + process.pid + ')')
}
}

@@ -13,2 +13,2 @@ 'use strict'

})
}
}

@@ -22,2 +22,2 @@ 'use strict'

callback(null, (inside / points) * 4)
}
}
'use strict'
const DEFAULT_OPTIONS = {
maxCallsPerWorker : Infinity
workerOptions : {}
, maxCallsPerWorker : Infinity
, maxConcurrentWorkers : (require('os').cpus() || { length: 1 }).length

@@ -14,4 +15,3 @@ , maxConcurrentCallsPerWorker : 10

const extend = require('xtend')
, fork = require('./fork')
const fork = require('./fork')
, TimeoutError = require('errno').create('TimeoutError')

@@ -23,3 +23,3 @@ , ProcessTerminatedError = require('errno').create('ProcessTerminatedError')

function Farm (options, path) {
this.options = extend(DEFAULT_OPTIONS, options)
this.options = Object.assign({}, DEFAULT_OPTIONS, options)
this.path = path

@@ -108,3 +108,3 @@ this.activeCalls = 0

let forked = fork(this.path)
let forked = fork(this.path, this.options.workerOptions)
, id = this.childId

@@ -111,0 +111,0 @@ , c = {

@@ -7,3 +7,3 @@ 'use strict'

function fork (forkModule) {
function fork (forkModule, workerOptions) {
// suppress --debug / --inspect flags while preserving others (like --harmony)

@@ -13,7 +13,8 @@ let filteredArgs = process.execArgv.filter(function (v) {

})
, child = childProcess.fork(childModule, process.argv, {
execArgv: filteredArgs
, env: process.env
, cwd: process.cwd()
})
, options = Object.assign({
execArgv : filteredArgs
, env : process.env
, cwd : process.cwd()
}, workerOptions)
, child = childProcess.fork(childModule, process.argv, options)

@@ -20,0 +21,0 @@ child.on('error', function() {

@@ -34,2 +34,2 @@ 'use strict'

module.exports = farm
module.exports.end = end
module.exports.end = end
{
"name": "worker-farm",
"description": "Distribute processing tasks to child processes with an über-simple API and baked-in durability & custom concurrency options.",
"version": "1.5.4",
"version": "1.6.0",
"homepage": "https://github.com/rvagg/node-worker-farm",

@@ -21,4 +21,3 @@ "authors": [

"dependencies": {
"errno": "~0.1.7",
"xtend": "~4.0.1"
"errno": "~0.1.7"
},

@@ -25,0 +24,0 @@ "devDependencies": {

@@ -106,3 +106,4 @@ # Worker Farm [![Build Status](https://secure.travis-ci.org/rvagg/node-worker-farm.png)](http://travis-ci.org/rvagg/node-worker-farm)

{
maxCallsPerWorker : Infinity
workerOptions : {}
, maxCallsPerWorker : Infinity
, maxConcurrentWorkers : require('os').cpus().length

@@ -117,2 +118,4 @@ , maxConcurrentCallsPerWorker : 10

* **<code>workerOptions</code>** allows you to customize all the parameters passed to child nodes. This object supports [all possible options of `child_process.fork`](https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options). The default options passed are the parent `execArgv`, `cwd` and `env`. Any (or all) of them can be overridden, and others can be added as well.
* **<code>maxCallsPerWorker</code>** allows you to control the lifespan of your child processes. A positive number will indicate that you only want each child to accept that many calls before it is terminated. This may be useful if you need to control memory leaks or similar in child processes.

@@ -119,0 +122,0 @@

@@ -16,5 +16,7 @@ 'use strict'

module.exports.args = function (callback) {
console.log(process.argv)
console.log(process.execArgv)
callback()
callback(null, {
argv : process.argv
, cwd : process.cwd()
, execArgv : process.execArgv
})
}

@@ -21,0 +23,0 @@

@@ -7,3 +7,4 @@ 'use strict'

workers.args(function() {
workers.args(function(err, result) {
console.log(result);
workerFarm.end(workers)

@@ -10,0 +11,0 @@ console.log('FINISHED')

@@ -8,2 +8,3 @@ 'use strict'

, fs = require('fs')
, os = require('os')

@@ -27,3 +28,3 @@ function uniq (ar) {

t.ok(pid > process.pid, 'pid makes sense')
t.ok(pid < process.pid + 500, 'pid makes sense')
t.ok(pid < process.pid + 750, 'pid makes sense')
t.ok(rnd >= 0 && rnd < 1, 'rnd result makes sense')

@@ -45,3 +46,3 @@ })

t.ok(pid > process.pid, 'pid makes sense')
t.ok(pid < process.pid + 500, 'pid makes sense')
t.ok(pid < process.pid + 750, 'pid makes sense')
t.ok(rnd >= 0 && rnd < 1, 'rnd result makes sense')

@@ -358,3 +359,3 @@ })

t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 500, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(rnd >= 0 && rnd < 1, 'rnd result makes sense')

@@ -377,3 +378,3 @@ })

t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 500, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(rnd > 0 && rnd < 1, 'rnd result makes sense ' + rnd)

@@ -385,3 +386,3 @@ })

t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 500, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(rnd > 0 && rnd < 1, 'rnd result makes sense ' + rnd)

@@ -421,3 +422,3 @@ })

t.ok(pid > process.pid, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 500, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(pid < process.pid + 750, 'pid makes sense ' + pid + ' vs ' + process.pid)
t.ok(rnd > 0 && rnd < 1, 'rnd result makes sense ' + rnd)

@@ -531,2 +532,24 @@ })

tape('custom arguments can be passed to "fork"', function (t) {
t.plan(3)
// allocate a real, valid path, in any OS
let cwd = fs.realpathSync(os.tmpdir())
, workerOptions = {
cwd : cwd
, execArgv : ['--no-warnings']
}
, child = workerFarm({ maxConcurrentWorkers: 1, maxRetries: 5, workerOptions: workerOptions}, childPath, ['args'])
child.args(function (err, result) {
t.equal(result.execArgv[0], '--no-warnings', 'flags passed (overridden default)')
t.equal(result.cwd, cwd, 'correct cwd folder')
})
workerFarm.end(child, function () {
t.ok(true, 'workerFarm ended')
})
})
tape('ensure --debug/--inspect not propagated to children', function (t) {

@@ -533,0 +556,0 @@ t.plan(3)

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc