Runs can be paused using delays. They can be very long.

Delays works even if you’re on a serverless platform with timeouts, or if your server goes down. They utilize resumability to ensure that the Run can be resumed after the delay.

Usage

Wait example
client.defineJob({
  id: "delay-job",
  name: "Delay Job",
  version: "0.0.1",
  trigger: eventTrigger({
    name: "example.event",
  }),
  run: async (payload, io, ctx) => {
    await io.logger.info("Hi");

    // the second parameter is the number of seconds to wait
    await io.wait("wait 30 days", 30 * 24 * 60 * 60);

    await io.logger.info("Sorry for the slow reply!");
  },
});