- codeboard:generate → codeboard-generate in worker and web - Update docker-compose: remove postgres (unused), use non-conflicting ports - Exclude tests/ from Docker build context
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { Worker } from "bullmq";
|
|
import IORedis from "ioredis";
|
|
import { processGenerationJob } from "./processor.js";
|
|
|
|
const redisUrl = process.env.REDIS_URL ?? "redis://localhost:6379";
|
|
const connection = new IORedis(redisUrl, { maxRetriesPerRequest: null });
|
|
|
|
const worker = new Worker(
|
|
"codeboard-generate",
|
|
async (job) => {
|
|
console.log(`[worker] Processing job ${job.id}: ${job.data.repoUrl}`);
|
|
return processGenerationJob(job);
|
|
},
|
|
{
|
|
connection,
|
|
concurrency: 2,
|
|
removeOnComplete: { count: 100 },
|
|
removeOnFail: { count: 50 },
|
|
}
|
|
);
|
|
|
|
worker.on("completed", (job) => {
|
|
console.log(`[worker] Job ${job.id} completed`);
|
|
});
|
|
|
|
worker.on("failed", (job, err) => {
|
|
console.error(`[worker] Job ${job?.id} failed:`, err.message);
|
|
});
|
|
|
|
worker.on("ready", () => {
|
|
console.log("[worker] Ready and waiting for jobs on codeboard-generate");
|
|
});
|
|
|
|
async function shutdown() {
|
|
console.log("[worker] Shutting down...");
|
|
await worker.close();
|
|
await connection.quit();
|
|
process.exit(0);
|
|
}
|
|
|
|
process.on("SIGTERM", shutdown);
|
|
process.on("SIGINT", shutdown);
|