Download

Beta

Docs Blog Workflows Styles
GitHub

Scheduling Jobs
2 min

Learn how to schedule tasks from your workflows.

A relagit workflow begins runingn when the app is opened. You’ve already learnt how to run actions on certain events, but what if you want to run a task at a specific time? This is where cron jobs come in.

Setting up a cron job

relagit:workflows provides a helpful cron export to accomplish this. You can use it to schedule a task to run at a specific interval.

Scheduling a cron job
import { const cron: (<T extends number | TemplateStringsArray>(time: T) => T extends number ? { seconds: number; minutes: number; hours: number; days: number; months: number; } : number) & { ...; }
A utility to generate CRON timings.
cron
} from "relagit:actions";
let let duration: numberduration: number; let duration: numberduration = cron<5>(time: 5): { seconds: number; minutes: number; hours: number; days: number; months: number; }cron(5).hours: numberhours; let duration: numberduration = const cron: (<T extends number | TemplateStringsArray>(time: T) => T extends number ? { seconds: number; minutes: number; hours: number; days: number; months: number; } : number) & { ...; }
A utility to generate CRON timings.
cron
`5 hours`; // also works
const cron: (<T extends number | TemplateStringsArray>(time: T) => T extends number ? { seconds: number; minutes: number; hours: number; days: number; months: number; } : number) & { ...; }
A utility to generate CRON timings.
cron
.schedule: (time: number, cb: () => void, proxy: RecordType) => void
Schedule a function to run at specific times.
schedule
(
let duration: numberduration, () => { var console: Console
The `console` module provides a simple debugging console that is similar to the JavaScript console mechanism provided by web browsers. The module exports two specific components: * A `Console` class with methods such as `console.log()`, `console.error()` and`console.warn()` that can be used to write to any Node.js stream. * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`. _**Warning**_: The global console object's methods are neither consistently synchronous like the browser APIs they resemble, nor are they consistently asynchronous like all other Node.js streams. See the `note on process I/O` for more information. Example using the global `console`: ```js console.log('hello world'); // Prints: hello world, to stdout console.log('hello %s', 'world'); // Prints: hello world, to stdout console.error(new Error('Whoops, something bad happened')); // Prints error message and stack trace to stderr: // Error: Whoops, something bad happened // at [eval]:5:15 // at Script.runInThisContext (node:vm:132:18) // at Object.runInThisContext (node:vm:309:38) // at node:internal/process/execution:77:19 // at [eval]-wrapper:6:22 // at evalScript (node:internal/process/execution:76:60) // at node:internal/main/eval_string:23:3 const name = 'Will Robinson'; console.warn(`Danger ${name}! Danger!`); // Prints: Danger Will Robinson! Danger!, to stderr ``` Example using the `Console` class: ```js const out = getStreamSomehow(); const err = getStreamSomehow(); const myConsole = new console.Console(out, err); myConsole.log('hello world'); // Prints: hello world, to out myConsole.log('hello %s', 'world'); // Prints: hello world, to out myConsole.error(new Error('Whoops, something bad happened')); // Prints: [Error: Whoops, something bad happened], to err const name = 'Will Robinson'; myConsole.warn(`Danger ${name}! Danger!`); // Prints: Danger Will Robinson! Danger!, to err ```
@see[source](https://github.com/nodejs/node/blob/v16.4.2/lib/console.js)
console
.Console.log(message?: any, ...optionalParams: any[]): void (+1 overload)
Prints to `stdout` with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`). ```js const count = 5; console.log('count: %d', count); // Prints: count: 5, to stdout console.log('count:', count); // Prints: count: 5, to stdout ``` See `util.format()` for more information.
@sincev0.1.100
log
("It's been 5 hours!");
}, let options: OptionsType<any>options, );

If you want to run a task every 5 hours, you can use the cron function to get the duration in milliseconds. You can then pass this duration to cron.schedule along with a callback function to run.

If the app is closed and the cron job is scheduled to run, it will run the next time the app is opened.