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

pglistend

v0.2.1-0

Published

pglistend - Postgres LISTEN Daemon using Node.js/Systemd

Downloads

21

Readme

pglistend

npm version npm downloads Code Climate

A lightweight Postgres LISTEN Daemon built on top of node, node-postgres and systemd.

It's a very simple yet generic daemon application that could be used in any project that makes use of Postgres' LISTEN/NOTIFY feature.

It runs as a background process that does LISTEN on the configured channels on a database and allows to perform custom actions on receiving NOTIFY signals on those channels.

Check this simple tutorial to get started with it.

Installation

Firstly, install the npm package globally. This will make pglisten CLI tool available on your system.

$ npm install -g pglistend

Now setup the daemon using this command.

$ sudo pglisten setup-daemon

Or, alternatively you can curl the script and run it on the fly.

$ curl https://raw.githubusercontent.com/kabirbaidhya/pglistend/master/setup/setup.py | sudo python

When it's done, edit your configuration. And finally start the service using

$ sudo systemctl start pglistend

Usage

Managing the daemon

You can use systemd commands to manage pglistend.

# Start the service
$ systemctl start pglistend

# Stop the service
$ systemctl stop pglistend

# Check service status
$ systemctl status pglistend

# Enable the service (This will start the service on bootup)
$ systemctl enable pglistend

# Disable the service (Disable the service to not start on bootup)
$ systemctl disable pglistend

For more information about systemd check this

Logs

All logs are written to syslog. So, you can make use of journalctl here

$ journalctl -u pglistend
$ journalctl -f -u pglistend

Or, you can simply tail the logs like this:

$ tail /var/log/syslog | grep pglistend
$ tail -f /var/log/syslog | grep pglistend

Check this to read more about journalctl.

Tutorials

  1. Getting Started
  2. Performing custom actions

Testing

  1. Clone repository: git clone [email protected]:kabirbaidhya/pglistend.git
  2. Install dependencies: npm install
  3. Install other required packages:
    • pycodestyle: pip install pycodestyle or pip install --upgrade pycodestyle [Reference]
    • pylint: sudo apt-get install pylint [Reference]
  4. Copy configuration file config.yml.sample and rename to .pglistend.yml in root directory. Update database credentials, channels and location of scripts.
  5. To prepare a script, copy listener.js.sample and save it as listener.js, or anything you wish, to any location(recommended to save outside project directory). Update the preferred channels and instructions in the script. Also, update the location of script in .pglistend.yml.
  6. From terminal in root directory, run: npm start. You can see the logs in terminal as the channels hit the queries when the notify operation is called on.

TODOs

  • Delegate CPU-intensive tasks (mostly queries) to separate thread or message queue most likely. Here's why