17. Background jobs

import { enqueue, enqueueAfter, every } from "#ucm/server";

export async function signup(user: string): Promise<string> {
  enqueue(sendWelcome, user);              // returns the job id at once; the work runs in the background
  enqueueAfter(3600, sendReminder, user);  // an hour from now
  return user;
}
export const nightly = every("0 3 * * *", cleanup);

17.1 Queued jobs

17.2 Scheduled jobs

every("0 3 * * *", cleanup) uses five cron fields in UTC; every("15m", sync) an interval (s, m, h, d).

17.3 Managing jobs

ucm jobs [n] lists the queue; ucm jobs retry <id> and ucm jobs cancel <id> act on one (an id prefix is enough). In tests, runJobs() drains the queue inline (testing).

built from 5890e54f