diff options
| author | MohamedBassem <me@mbassem.com> | 2024-04-02 12:58:33 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-04-02 12:59:31 +0100 |
| commit | 79321f83293bc37d37af4b0a0b2bd324f5bafe1a (patch) | |
| tree | e56e819240eebc0d65e5a85a996d4751e458c4b1 /apps/workers/utils.ts | |
| parent | c73dde43cc816b8bf8eee74051d4fdac402cc710 (diff) | |
| download | karakeep-79321f83293bc37d37af4b0a0b2bd324f5bafe1a.tar.zst | |
fix(workers): Add a timeout to the crawling job to prevent it from getting stuck. Fixes #63
Diffstat (limited to 'apps/workers/utils.ts')
| -rw-r--r-- | apps/workers/utils.ts | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/apps/workers/utils.ts b/apps/workers/utils.ts new file mode 100644 index 00000000..2f56d3f0 --- /dev/null +++ b/apps/workers/utils.ts @@ -0,0 +1,16 @@ +export function withTimeout<T, Ret>( + func: (param: T) => Promise<Ret>, + timeoutSec: number, +) { + return async (param: T): Promise<Ret> => { + return await Promise.race([ + func(param), + new Promise<Ret>((_resolve, reject) => + setTimeout( + () => reject(new Error(`Timed-out after ${timeoutSec} secs`)), + timeoutSec * 1000, + ), + ), + ]); + }; +} |
