npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dot-queue

v1.0.3

Published

Dot queue is a node js queue with support for multiprocessing. Dot queue forks workers smartly based on the current cpu usage.

Downloads

1

Readme

Dot queue

Dot queue is a node js queue with support for multiprocessing. Dot queue forks workers smartly based on the current cpu usage.

How to install

npm i dot-queue

Documentation

Make sure your mongo instance is a replica set. Refer here for creating a replica set. This module will not work if replica set is not initiated.

Import the queue.

const DotQ = require('dot-queue');

Initiate a queue.

DotQ.create([options], mongoConnectionStr)

Options

maxWorkers: maximum number of workers master can fork.
data-type: int
default: Equal to number of cpu cores i.e os.cpus().length

collection: mongo db collection name for maintianing job queues data.
data-type: string
default: 'dot_queue'

maxCPUUsage: Percentage cpu usage after which workers should be killed or not allowed to be forked.
data-type: int
default: 75

Methods

defineJob: Define a new job handler.
Arguments:
name: (string) Name with which jobs in queue can identify the defined jobs.
action: (function) Job handler function.

ex:

DotQ.defineJob('download_image', (job_data, done) => {
	child_process.execSync(`curl ${job_data.url} -o dump/${job_data.id}.jpg`);
	 // Calling done will signal the queue that the job has been succesfully
	 // processed and it can be removed from the queue
	done();
})

addJob: Add a new job to the queue (asyncronous).
Arguments:
name: (string) Job name used to identify the job to be performed.
data: (object) Data to be passed to the job while processing.
priority: (int) Priority of the job. Optional, if nothing specified it will be 5. Higher priority jobs will be processed first.
ex:

DotQ.addJob('download_image', {
	id: 25,
	url: <some-image-url>
})

Important note: Adding jobs and defining jobs should always be done in different scripts. If done in same scripts then dot-queue will throw an error.

License

MIT License