Runs
Everytime a Job is triggered, a Run is created with a payload of data.
Anatomy of a Run
A Run is a record of the execution of a Job. It is created from run()
function of a Job.
client.defineJob({
id: "event-1",
name: "Run when the foo.bar event happens",
version: "0.0.1",
trigger: eventTrigger({
name: "foo.bar",
schema: z.object({
url: z.string(),
}),
}),
// 1. Run function with params
run: async (payload, io, ctx) => {
// 2. Regular code and Tasks
// 3. Optionally return data from run execution
return { status: 'success' }
},
});
- The
run()
function is called with some useful parameters. More on that in a second. - Inside the run function you can write regular code and use Tasks.
- You can return data, which will then be retrievable with getRun or the React hooks.
Resumability
Runs can exceed the maximum timeout on serverless platforms. If a Run exceeds this limit, it will be re-run. When it is re-run, any completed Tasks return their original output and they aren’t re-run. Read more about Resumability.
Run function parameters
payload
The payload is the data that triggered the Job. It is the same data that was sent to the Trigger that triggered the Job.
- For Webhooks the payload is the data from the webhook.
- For Events the payload is the data from the event, in the example above that’s
{ url: "https://..." }
. - For Scheduled the payload is an object with the timestamp and the last timestamp (previous run).
io
The io
object gives you access to Integrations and other useful functions. View the full reference for io
.
A few things you can do with io
:
- Use Integrations.
- Add delays (that can be longer than your server timeout).
- Log messages to the Run log.
- Perform background fetch requests (that can be longer than your server timeout).
- Send events to Trigger other Jobs.
- Create a Task manually by wrapping code in
io.runTask
.
context
The context
object gives you access to information about the current Run, Job, Environment, Organization and Event. View the full reference for context
.