Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
69 lines (51 sloc) 1.5 KB

Scheduling Jobs

You can schedule jobs using shell scripts and the node-schedule library.

Example

scripts/fetch-metrics.ts

export function main(args) {
  // Do some stuff
}

scripts/schedule-jobs.ts

// 3p
import { scheduleJob } from 'node-schedule';
import { main as fetchMetrics } from './fetch-metrics';

export async function main(args) {
  console.log('Scheduling the job...');

  // Run the fetch-metrics script every day at 10:00 AM.
  scheduleJob(
    { hour: 10, minute: 0 },
    () => fetchMetrics(args)
  );

  console.log('Job scheduled!');
}

Schedule the job(s):

npm run build:scripts
foal run schedule-jobs arg1=value1

Background Jobs with pm2

While the above command works, it does not run the scheduler and the jobs in the background. To do this, you can use pm2, a popular process manager for Node.js.

First you need to install locally the Foal CLI:

npm install @foal/cli

Then you can run the scheduler like this:

pm2 start ./node_modules/.bin/foal --name scheduler -- run schedule-jobs arg1=value1

If everything works fine, you should see your scheduler running with this command:

pm2 ls

To display the logs of the scheduler and the jobs, use this one:

pm2 logs scheduler

Eventually, to stop the scheduler and the jobs, you can use this command:

pm2 delete scheduler
You can’t perform that action at this time.