
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
micro-job-scheduler
Advanced tools
Promise-based in-memory micro job scheduler.
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.
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();
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 concurrencyfn
: 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.
This package is supported by SaaSquatch.
This project is licensed under the MIT License - see the LICENSE.md file for details
[1.1.1] - 2023-04-20
FAQs
Promise-based in-memory micro job scheduler
The npm package micro-job-scheduler receives a total of 0 weekly downloads. As such, micro-job-scheduler popularity was classified as not popular.
We found that micro-job-scheduler demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 11 open source maintainers 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
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.