Fibonacci With Pool And Timeout
Problem
Expensive recursive computation needs a latency limit.
Solution
Put recursion in worker module and configure task timeout.
ts
// fib.worker.ts
import { exposeTask } from '@vielzeug/familiar/protocol';
function fib(value: number): number {
return value <= 1 ? value : fib(value - 1) + fib(value - 2);
}
exposeTask(fib);ts
import { createWorker } from '@vielzeug/familiar';
const pool = createWorker<number, number>(new URL('./fib.worker.ts', import.meta.url), { concurrency: 4, timeout: 5_000 });
try {
const result = await pool.run(35);
console.log(result);
} finally {
pool.dispose();
}Pitfalls
- Timeout terminates worker slot and rejects with
FamiliarTimeoutError. - Set deadline from expected input limits.