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 });
|