mirror of
https://github.com/mendableai/firecrawl.git
synced 2024-11-16 03:32:22 +08:00
feat(batchScrape): handle timeout
This commit is contained in:
parent
f6db9f1428
commit
91f52287db
|
@ -276,10 +276,18 @@ async function processJob(job: Job & { id: string }, token: string) {
|
||||||
});
|
});
|
||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
|
|
||||||
const pipeline = await startWebScraperPipeline({
|
const pipeline = await Promise.race([
|
||||||
job,
|
startWebScraperPipeline({
|
||||||
token,
|
job,
|
||||||
});
|
token,
|
||||||
|
}),
|
||||||
|
...(job.data.scrapeOptions.timeout !== undefined ? [
|
||||||
|
(async () => {
|
||||||
|
await sleep(job.data.scrapeOptions.timeout);
|
||||||
|
throw new Error("timeout")
|
||||||
|
})(),
|
||||||
|
] : [])
|
||||||
|
]);
|
||||||
|
|
||||||
if (!pipeline.success) {
|
if (!pipeline.success) {
|
||||||
// TODO: let's Not do this
|
// TODO: let's Not do this
|
||||||
|
@ -486,13 +494,19 @@ async function processJob(job: Job & { id: string }, token: string) {
|
||||||
logger.info(`🐂 Job done ${job.id}`);
|
logger.info(`🐂 Job done ${job.id}`);
|
||||||
return data;
|
return data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error(`🐂 Job errored ${job.id} - ${error}`);
|
const isEarlyTimeout = error instanceof Error && error.message === "timeout";
|
||||||
|
|
||||||
Sentry.captureException(error, {
|
if (!isEarlyTimeout) {
|
||||||
data: {
|
logger.error(`🐂 Job errored ${job.id} - ${error}`);
|
||||||
job: job.id,
|
|
||||||
},
|
Sentry.captureException(error, {
|
||||||
});
|
data: {
|
||||||
|
job: job.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
logger.error(`🐂 Job timed out ${job.id}`);
|
||||||
|
}
|
||||||
|
|
||||||
if (error instanceof CustomError) {
|
if (error instanceof CustomError) {
|
||||||
// Here we handle the error, then save the failed job
|
// Here we handle the error, then save the failed job
|
||||||
|
|
Loading…
Reference in New Issue
Block a user