Hello world task and how to trigger it
Here’s an incredibly simple task:/trigger/hello-world.ts
You must
export each task, even subtasks inside the same file. When exported they are accessible so their configuration can be registered with the platform.- From the dashboard using the “Test” feature.
- Trigger it from your backend code. See the full triggering guide here.
Your backend code
Defining a task
The task function takes an object with the following fields.
The id field
This is used to identify your task so it can be triggered, managed, and you can view runs in the dashboard. This must be unique in your project – we recommend making it descriptive and unique.
The run function
Your custom code inside run() will be executed when your task is triggered. It’s an async function that has two arguments:
- The run payload - the data that you pass to the task when you trigger it.
- An object with
ctxabout the run (Context), and any output from the optionalinitfunction that runs before every run attempt.
run function will be the result of the task. Data you return must be JSON serializable: strings, numbers, booleans, arrays, objects, and null.
retry options
A task is retried if an error is thrown, by default we retry 3 times.
You can set the number of retries and the delay between retries in the retry field:
/trigger/retry.ts
queue options
Queues allow you to control the concurrency of your tasks. This allows you to have one-at-a-time execution and parallel executions. There are also more advanced techniques like having different concurrencies for different sets of your users. For more information read the concurrency & queues guide.
/trigger/one-at-a-time.ts
machine options
Some tasks require more vCPUs or GBs of RAM. You can specify these requirements in the machine field. For more information read the machines guide.
/trigger/heavy-task.ts
maxDuration option
By default tasks can execute indefinitely, which can be great! But you also might want to set a maxDuration to prevent a task from running too long. You can set the maxDuration on a task, and all runs of that task will be stopped if they exceed the duration.
/trigger/long-task.ts
Lifecycle functions
init function
This function is called before a run attempt:
/trigger/init.ts
init function that will be available in the params of the run, cleanup, onSuccess, and onFailure functions.
/trigger/init-return.ts
Errors thrown in the
init function are ignored.cleanup function
This function is called after the run function is executed, regardless of whether the run was successful or not. It’s useful for cleaning up resources, logging, or other side effects.
/trigger/cleanup.ts
Errors thrown in the
cleanup function will fail the attempt.middleware function
This function is called before the run function, it allows you to wrap the run function with custom code.
An error thrown in
middleware is just like an uncaught error in the run function: it will
propagate through to handleError() and then will fail the attempt (causing a retry).onStart function
When a task run starts, the onStart function is called. It’s useful for sending notifications, logging, and other side effects. This function will only be called one per run (not per retry). If you want to run code before each retry, use the init function.
/trigger/on-start.ts
onStart function in your trigger.config.ts file to get notified when any task starts.
trigger.config.ts
Errors thrown in the
onStart function are ignored.onSuccess function
When a task run succeeds, the onSuccess function is called. It’s useful for sending notifications, logging, syncing state to your database, or other side effects.
/trigger/on-success.ts
onSuccess function in your trigger.config.ts file to get notified when any task succeeds.
trigger.config.ts
Errors thrown in the
onSuccess function are ignored.onFailure function
When a task run fails, the onFailure function is called. It’s useful for sending notifications, logging, or other side effects. It will only be executed once the task run has exhausted all its retries.
/trigger/on-failure.ts
onFailure function in your trigger.config.ts file to get notified when any task fails.
trigger.config.ts
Errors thrown in the
onFailure function are ignored.onFailure doesn’t fire for some of the run statuses like Crashed, System failures, and Canceled.handleError functions
You can define a function that will be called when an error is thrown in the run function, that allows you to control how the error is handled and whether the task should be retried.
Read more about handleError in our Errors and Retrying guide.
Uncaught errors will throw a special internal error of the type
HANDLE_ERROR_ERROR.
