Security News
Introducing the Socket Python SDK
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Queueing jobs in Node.js using PostgreSQL like a boss.
async function readme() {
const PgBoss = require('pg-boss');
const boss = new PgBoss('postgres://user:pass@host/database');
boss.on('error', error => console.error(error));
await boss.start();
const queue = 'some-queue';
let jobId = await boss.publish(queue, { param1: 'foo' })
console.log(`created job in queue ${queue}: ${jobId}`);
await boss.subscribe(queue, someAsyncJobHandler);
}
async function someAsyncJobHandler(job) {
console.log(`job ${job.id} received with data:`);
console.log(JSON.stringify(job.data));
await doSomethingAsyncWithThis(job.data);
}
pg-boss is a job queue built in Node.js on top of PostgreSQL in order to provide background processing and reliable asynchronous execution to Node.js applications.
pg-boss relies on SKIP LOCKED, a feature introduced in PostgreSQL 9.5 written specifically for message queues, in order to resolve record locking challenges inherent with relational databases. This brings the safety of guaranteed atomic commits of a relational database to your asynchronous job processing.
This will likely cater the most to teams already familiar with the simplicity of relational database semantics and operations (SQL, querying, and backups). It will be especially useful to those already relying on PostgreSQL that want to limit how many systems are required to monitor and support in their architecture.
# npm
npm install pg-boss
# yarn
yarn add pg-boss
To setup a development environment for this library:
git clone https://github.com/timgit/pg-boss.git
npm install
To run the test suite you will need to pgboss access to an empty postgres database. You can set one up using the following commands on a local postgres instance:
CREATE DATABASE pgboss;
CREATE user postgres WITH PASSWORD 'postgres';
GRANT ALL PRIVILEGES ON DATABASE pgboss to postgres;
-- run the following command in the context of the pgboss database
CREATE EXTENSION pgcrypto;
If you use a different database name, username or password, or want to run the test suite against a database that is running on a remote machine then you will need to edit the test/config.json
file with the appropriate connection values.
You can then run the linter and test suite using:
npm test
FAQs
Queueing jobs in Postgres from Node.js like a boss
The npm package pg-boss receives a total of 43,398 weekly downloads. As such, pg-boss popularity was classified as popular.
We found that pg-boss demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.
Security News
A new Rust RFC proposes "Trusted Publishing" for Crates.io, introducing short-lived access tokens via OIDC to improve security and reduce risks associated with long-lived API tokens.