Setting the file. One moment.
Subchapter 1.6
references/durable-execution.mdMarkdown2 KBView on GitHub
Fetch https://developers.cloudflare.com/agents/api-reference/durable-execution/ (opens in a new tab) for complete documentation.
Fibers let agent work survive Durable Object eviction. Progress is checkpointed to SQLite; on recovery, you decide what to do.
runFiberexport class MyAgent extends Agent<Env, State> {
async onRequest(request: Request) {
await this.runFiber("process-data", async (ctx) => {
const step1 = await fetchData();
ctx.stash({ step: 1, data: step1 });
const step2 = await transform(step1);
ctx.stash({ step: 2, result: step2 });
this.setState({ result: step2 });
});
return new Response("Started");
}
async onFiberRecovered(ctx) {
const checkpoint = ctx.stash;
if (checkpoint.step === 1) {
const step2 = await transform(checkpoint.data);
this.setState({ result: step2 });
}
}
}| API | Purpose |
|---|---|
this.runFiber(name, fn) | Start a named fiber |
ctx.stash / this.stash | Read latest checkpoint |
ctx.stash = data | Write checkpoint (JSON-serializable) |
onFiberRecovered(ctx) | Called on DO restart if fiber was in-flight |
keepAlive() | Prevent hibernation while fiber runs |
keepAliveWhile(fn) | Keep alive for duration of async function |
stash replaces the entire checkpoint — not a mergeonFiberRecoveredctx.name in onFiberRecovered