For easily managing slave processes.
mgr
Easier multithreading for Node.
Why?
Because multi-threaded node applications are unwieldy to work with, and I needed to work with them.
API
.job
Used by new child processes to expose functions (tasks) to parent processes.
It takes two arguments:
- The name of the job (case sensitive).
- A function to call when it's ready.
import { job } from 'mgr' job('compute PI', () => { // do stuff })
Jobs will only run when called by their parent process, and must always return a promise. If you've got a sweet Babel setup, I recommend using async
functions. They're way nicer and crafted from unicorn tears.
job('do things', async (name) => { // things return 10 // Automagically promisified. })
When a job finishes, the value is sent to the parent process (same goes for errors).
.Fork
Fork
creates a new child node process and aims it at a file path you pass it. Any jobs declared by the child process can be run through Fork
.
Paths must be absolute.
// Import the Fork class. import { Fork } from 'mgr' // The absolute path to a .js file. const file = `${__dirname}/slave-code.js` // Spawns a new process. const slave = new Fork(file)
fork.run
Starts a job in the child process, returning a promise.
Job names are case-sensitive.
slave.run('compute PI') .then(console.log) .catch((error) => console.log('Oh noes!'))
If the job is expecting arguments, you can pass one immediately after the job name.
slave.run('encrypt', { data: 'Nuclear launch codes: ...', phrase: 'potatoes are lovely', }).then((result) => console.log(result))
To keep stuff simple, only one argument is allowed.
Installing
From npm
$ npm install mgr --save
From GitHub
$ git clone https://github.com/PsychoLlama/mgr.git $ cd mgr $ npm install $ npm run build
Running tests
First, install from GitHub. npm only has the compiled code.
Be sure to run the build first:
# Run once. $ npm run build # OPTIONAL: watch for changes. $ npm run build -- --watch
Now you can run the tests.
$ npm test
<dl> <dt>mgr</dt> <dd>Abbreviation, "manager"</dd> </dl>
HomePage
https://github.com/PsychoLlama/mgr#readme
Repository
git+https://github.com/PsychoLlama/mgr.git
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f451d8e776d08040f07