Socket
Book a DemoInstallSign in
Socket

micro-job-scheduler

Package Overview
Dependencies
Maintainers
11
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

micro-job-scheduler

Promise-based in-memory micro job scheduler

1.1.1
latest
Source
npmnpm
Version published
Weekly downloads
0
Maintainers
11
Weekly downloads
 
Created
Source

micro-job-scheduler

Promise-based in-memory micro job scheduler.

NPM version NPM downloads

Sometimes you just want to run tasks at a regular interval, with some concurrency, and the overhead of job scheduling systems like agenda are just too much.

This package implements a very simple job scheduler that allows you to run jobs on a schedule (defined by an ISO 8601 duration), with support for running jobs of a particular type with a level of concurrency.

It is implemented with a basic setInterval that runs once a second and looks for jobs to schedule.

Getting Started

import MicroJobScheduler from "micro-job-scheduler";

const scheduler = new MicroJobScheduler();

for (let i = 0; i < 10; i++) {
  scheduler.addJob(
    {
      concurrencyKey: "aJob",
      durationBetweenRuns: "PT1M",
      fn: aJob,
    },
    {
      i,
    }
  );
}

scheduler.setConcurrency("aJob", 2);

async function aJob(job: Job) {
  return new Promise((resolve) => {
    console.log("A JOB IS RUNNING", job.id, job.data);
    setTimeout(() => {
      console.log("A JOB IS COMPLETED", job.id, job.data);
      resolve();
    }, 10000);
  });
}

scheduler.start();

API

start()

Starts the job scheduler.

stop()

Stop the job scheduler.

addJob(jobOptions, jobData)

Add a job with the given options, and the given data. Options you can pass are:

  • durationBetweenRuns: An ISO8601 duration string, like PT5M to indicate 5 minutes. Use PT0M (or anything else that is a valid ISO8601 duration that is 0 seconds long) for a single-shot job that should only be run once, and removed from the scheduler when it completes (successfully or unsuccessfully).
  • concurrencyKey: A string which groups jobs together for the purpose of concurrency
  • fn: The function to run your job, with the signature fn(job: Job): Promise<any>.

removeJob(jobId)

Removes a job from the scheduler.

updateJobData(jobId, data)

Updates the data for a job.

setConcurrency(concurrencyKey, concurrency)

Sets how many jobs with a particular concurrencyKey can run simultaneously.

getJobs()

Returns a copy of the internal scheduler state.

Supporters

This package is supported by SaaSquatch.

License

This project is licensed under the MIT License - see the LICENSE.md file for details

FAQs

Package last updated on 20 Apr 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.