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

process-locker

v0.3.2

Published

Base on redis, same resource should only be processed once. Requests about the resource will be pending until process is complete and then the result will be returned.

Downloads

31

Readme

Process-Locker

Base on redis, one resource only be processed once. Requests about the resource will be pending until process is complete and then the result will be returned. 基于redis,同一个资源仅会被处理一次,如果一个资源正在处理,当前请求都会被挂起,待处理完成后返回结果。

Usage:

var Locker = require('process-locker')
var locker = Locker()
var key = 'resource-key'
locker.request(key)(function (err, resp) {
  var result
	if (resp.status === Locker.LOCKED) {
    // do the process
    locker.publish(key, result)()
  } else if (resp.status === Locker.DONE) {
    result = resp.result
  }
  // process result
})

API:

Locker(options)

return a locker instance options:

  • redis thunk-redis-client or string use thunk-redis client to lock and publish events. Default use: localhost:6379
  • subRedis thunk-redis-client or string use thunk-redis client to subscribe events. Default use: localhost:6379
  • redisPrefix String Default: locker
  • channel String channel name for redis subscribe Default: channel
  • resultTimeout Number milliseconds to cache the process result Default: 30 * 60 * 1000
  • lockTimeout Number milliseconds to lock the process result Default: 60 * 60 * 1000

Locker.LOCKED

locker locked the key name and you have the only permission to process the resource. So you are the real processor.

Locker.DONE

locker received the real processor signal and notice all requests.

locker.request (key)

Request status for process named key. If status is Locker.status.LOCKED, means you become the real processor. Return a thunk function (use thunks) callback(err, resp)

  • key String the name of the process.
  • resp Object

locker.publish (key, result, timeout)

return a thunk function (use thunks) callback(err)

  • key String name of the process.
  • result Object result used to notice all requests
  • timeout Number milliseconds to cache the process result that will publish for other request