/adonisjs-scheduler

Task scheduler for AdonisJS

Primary LanguageTypeScriptMIT LicenseMIT

AdonisJS Scheduler

Task scheduler for AdonisJS v6

npm License: MIT Typescript

Scheduler code example

For AdonisJS v5 use 0.x branch

Getting Started

This package is available in the npm registry.

pnpm install adonisjs-scheduler

Next, configure the package by running the following command.

node ace configure adonisjs-scheduler

Running The Scheduler

node ace scheduler:run
# or
node ace scheduler:work

Defining Schedules

// start/scheduler.ts

import scheduler from 'adonisjs-scheduler/services/main'

import PurgeUsers from "../commands/purge_users";

scheduler.command("inspire").everyFiveSeconds();
scheduler.command(PurgeUsers, ["30 days"]).everyFiveSeconds().withoutOverlapping();

scheduler.withoutOverlapping(() => {
  scheduler.command("inspire").everySecond();
  scheduler.command(PurgeUsers, ["30 days"]).everyFiveSeconds();
}, { expiresAt: 30_000 });

scheduler.call(() => {
    console.log("Pruge DB!");
}).weekly();

Schedule Frequency Options

Method Description
.cron('* * * * *'); Run the task on a custom cron schedule
.everyMinute(); Run the task every minute
.everyTwoMinutes(); Run the task every two minutes
.everyThreeMinutes(); Run the task every three minutes
.everyFourMinutes(); Run the task every four minutes
.everyFiveMinutes(); Run the task every five minutes
.everyTenMinutes(); Run the task every ten minutes
.everyFifteenMinutes(); Run the task every fifteen minutes
.everyThirtyMinutes(); Run the task every thirty minutes
.hourly(); Run the task every hour
.everyTwoHours(); Run the task every two hours
.everyThreeHours(); Run the task every three hours
.everyFourHours(); Run the task every four hours
.everyFiveHours(); Run the task every five hours
.everySixHours(); Run the task every six hours
.daily(); Run the task every day at midnight
.weekly(); Run the task every Sunday at 00:00
.monthly(); Run the task on the first day of every month at 00:00
.quarterly(); Run the task on the first day of every quarter at 00:00
.yearly(); Run the task on the first day of every year at 00:00
.immediate(); Run the task on startup
.withoutOverlapping(); Run the task without overlapping