d984b50400
* Nick:
* Revert "fix(v1/types): fix extract -> json rename (FIR-1072) (#1195)"
This reverts commit 586a10f40d.
* Update deep-research-service.ts
* Nick:
* init
* part 2
* Update generate-llmstxt-service.ts
* Fix queue
* Update queue-worker.ts
* Almost there
* Final touches
* Update requests.http
* final touches
* Update requests.http
* Improve logging
* Change endpoint to /llmstxt
* Update queue-worker.ts
* Update generate-llmstxt-service.ts
* Nick: cache
* Update index.ts
* Update firecrawl.py
* Update package.json
---------
Co-authored-by: Nicolas <nicolascamara29@gmail.com>
Co-authored-by: Gergő Móricz <mo.geryy@gmail.com>
116 lines
2.9 KiB
TypeScript
116 lines
2.9 KiB
TypeScript
import { Queue } from "bullmq";
|
|
import { logger } from "../lib/logger";
|
|
import IORedis from "ioredis";
|
|
|
|
let scrapeQueue: Queue;
|
|
let extractQueue: Queue;
|
|
let loggingQueue: Queue;
|
|
let indexQueue: Queue;
|
|
let deepResearchQueue: Queue;
|
|
let generateLlmsTxtQueue: Queue;
|
|
|
|
export const redisConnection = new IORedis(process.env.REDIS_URL!, {
|
|
maxRetriesPerRequest: null,
|
|
});
|
|
|
|
export const scrapeQueueName = "{scrapeQueue}";
|
|
export const extractQueueName = "{extractQueue}";
|
|
export const loggingQueueName = "{loggingQueue}";
|
|
export const indexQueueName = "{indexQueue}";
|
|
export const generateLlmsTxtQueueName = "{generateLlmsTxtQueue}";
|
|
export const deepResearchQueueName = "{deepResearchQueue}";
|
|
|
|
export function getScrapeQueue() {
|
|
if (!scrapeQueue) {
|
|
scrapeQueue = new Queue(scrapeQueueName, {
|
|
connection: redisConnection,
|
|
defaultJobOptions: {
|
|
removeOnComplete: {
|
|
age: 3600, // 1 hour
|
|
},
|
|
removeOnFail: {
|
|
age: 3600, // 1 hour
|
|
},
|
|
},
|
|
});
|
|
logger.info("Web scraper queue created");
|
|
}
|
|
return scrapeQueue;
|
|
}
|
|
|
|
export function getExtractQueue() {
|
|
if (!extractQueue) {
|
|
extractQueue = new Queue(extractQueueName, {
|
|
connection: redisConnection,
|
|
defaultJobOptions: {
|
|
removeOnComplete: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
removeOnFail: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
},
|
|
});
|
|
logger.info("Extraction queue created");
|
|
}
|
|
return extractQueue;
|
|
}
|
|
|
|
export function getIndexQueue() {
|
|
if (!indexQueue) {
|
|
indexQueue = new Queue(indexQueueName, {
|
|
connection: redisConnection,
|
|
defaultJobOptions: {
|
|
removeOnComplete: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
removeOnFail: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
},
|
|
});
|
|
logger.info("Index queue created");
|
|
}
|
|
return indexQueue;
|
|
}
|
|
|
|
export function getGenerateLlmsTxtQueue() {
|
|
if (!generateLlmsTxtQueue) {
|
|
generateLlmsTxtQueue = new Queue(generateLlmsTxtQueueName, {
|
|
connection: redisConnection,
|
|
defaultJobOptions: {
|
|
removeOnComplete: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
removeOnFail: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
},
|
|
});
|
|
logger.info("LLMs TXT generation queue created");
|
|
}
|
|
return generateLlmsTxtQueue;
|
|
}
|
|
|
|
export function getDeepResearchQueue() {
|
|
if (!deepResearchQueue) {
|
|
deepResearchQueue = new Queue(deepResearchQueueName, {
|
|
connection: redisConnection,
|
|
defaultJobOptions: {
|
|
removeOnComplete: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
removeOnFail: {
|
|
age: 90000, // 25 hours
|
|
},
|
|
},
|
|
});
|
|
logger.info("Deep research queue created");
|
|
}
|
|
return deepResearchQueue;
|
|
}
|
|
|
|
// === REMOVED IN FAVOR OF POLLING -- NOT RELIABLE
|
|
// import { QueueEvents } from 'bullmq';
|
|
// export const scrapeQueueEvents = new QueueEvents(scrapeQueueName, { connection: redisConnection.duplicate() });
|