Files
firecrawl/apps/api/src/services/queue-service.ts
T

66 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-07-30 13:27:23 -04:00
import { Queue } from "bullmq";
2024-07-23 17:30:46 -03:00
import { Logger } from "../lib/logger";
2024-07-30 13:27:23 -04:00
import IORedis from "ioredis";
2024-04-15 17:01:47 -04:00
2024-07-30 13:27:23 -04:00
let webScraperQueue: Queue;
2024-07-30 14:44:13 -04:00
let scrapeQueue: Queue;
2024-07-30 13:27:23 -04:00
export const redisConnection = new IORedis(process.env.REDIS_URL, {
maxRetriesPerRequest: null,
});
2024-04-15 17:01:47 -04:00
2024-07-30 14:44:13 -04:00
export const webScraperQueueName = "{crawlQueue}";
export const scrapeQueueName = "{scrapeQueue}";
2024-04-15 17:01:47 -04:00
export function getWebScraperQueue() {
if (!webScraperQueue) {
2024-07-30 13:27:23 -04:00
webScraperQueue = new Queue(
webScraperQueueName,
{
connection: redisConnection,
2024-07-18 13:19:44 -04:00
}
2024-07-30 13:27:23 -04:00
// {
// settings: {
// lockDuration: 1 * 60 * 1000, // 1 minute in milliseconds,
// lockRenewTime: 15 * 1000, // 15 seconds in milliseconds
// stalledInterval: 30 * 1000,
// maxStalledCount: 10,
// },
// defaultJobOptions:{
// attempts: 5
// }
// }
);
2024-07-23 17:30:46 -03:00
Logger.info("Web scraper queue created");
2024-04-15 17:01:47 -04:00
}
return webScraperQueue;
}
2024-07-30 13:27:23 -04:00
2024-07-30 14:44:13 -04:00
export function getScrapeQueue() {
if (!scrapeQueue) {
scrapeQueue = new Queue(
scrapeQueueName,
{
connection: redisConnection,
}
// {
// settings: {
// lockDuration: 1 * 60 * 1000, // 1 minute in milliseconds,
// lockRenewTime: 15 * 1000, // 15 seconds in milliseconds
// stalledInterval: 30 * 1000,
// maxStalledCount: 10,
// },
// defaultJobOptions:{
// attempts: 5
// }
// }
);
Logger.info("Web scraper queue created");
}
return scrapeQueue;
}
import { QueueEvents } from 'bullmq';
2024-07-30 13:27:23 -04:00
2024-07-30 14:44:13 -04:00
export const scrapeQueueEvents = new QueueEvents(scrapeQueueName, { connection: redisConnection });
export const webScraperQueueEvents = new QueueEvents(webScraperQueueName, { connection: redisConnection });