Documentation Index Fetch the complete documentation index at: https://docs.goldsky.com/llms.txt
Use this file to discover all available pages before exploring further.
Cross task execution
A common pattern in compose apps is to trigger tasks from other tasks. This can be done either by creating an HTTP trigger
and calling it with fetch() , or by using callTask(). Typically you’ll want to use callTask().
callTask invokes another task in the same compose app . It awaits the invoked task’s main() function and resolves with its return value. If the invoked task throws, the error is re-thrown in the caller.
callTask < Args = Record < string , unknown > , T = unknown > (
taskName : string ,
args : Args ,
retryConfig ?: {
max_attempts: number ;
initial_interval_ms : number ;
backoff_factor : number ;
},
): Promise < T >
taskName — the name of a task declared in compose.yaml.
args — a JSON-serializable payload passed to the invoked task’s main() as its payload argument.
retryConfig — optional. Overrides the invoked task’s retry settings for this call.
Basic Example
import { TaskContext } from "compose" ;
export async function main ({ callTask } : TaskContext ) {
const result = await callTask ( "my_task" , { some: "payload" });
return result ;
}
Examples
Call task in a loop
import { TaskContext } from "compose" ;
type MarketData = {
questionId : string ;
resolved : boolean ;
startTime : number ;
endTime : number ;
};
export async function main ({ collection , callTask } : TaskContext ) {
const marketsCollection = await collection < MarketData >( "markets" );
const unresolvedMarkets = await marketsCollection . findMany ({ resolved: false });
const SYMBOL = "ETH-USD" ;
const marketDataPromises = unresolvedMarkets . map ( async ( market ) => {
try {
const response = await callTask <{ error ?: string }>( "readMarketData" , {
questionId: market . questionId ,
symbol: SYMBOL ,
startTime: market . startTime ,
endTime: market . endTime ,
});
return {
market ,
marketData: response ,
};
} catch ( error ) {
console . log ( `Failed to read candle data for market ${ market . questionId } : ${ error } ` );
return null ;
}
});
const marketDataResults = await Promise . all ( marketDataPromises );
return {
marketDataResults ,
};
}
Next Steps
Task Triggers Trigger tasks from cron, the CLI and via HTTP
Using Packages You can use any sandbox compatible typescript packages with any package manager.