AutoLoop / scripts /worker.ts
shubhjn's picture
fix broken automation
e140d17
/**
* Dedicated worker entrypoint.
* Run this in a separate process/container to handle queue jobs and background automation.
*/
process.env.START_QUEUE_WORKERS = "true";
async function main() {
const { connectRedis } = await import("@/lib/redis");
console.log("Starting dedicated worker process...");
const redis = await connectRedis();
if (!redis) {
console.error("Redis/Valkey is required for the worker process.");
process.exit(1);
}
try {
await redis.ping();
} catch (error) {
console.error("Queue backend is unreachable:", error);
process.exit(1);
}
const { startWorker } = await import("@/lib/queue");
const { startBackgroundWorkers, stopBackgroundWorkers } = await import("@/lib/workers");
try {
const workers = await startWorker();
await startBackgroundWorkers();
console.log("Worker process is online.");
const shutdown = async () => {
console.log("Stopping worker process...");
stopBackgroundWorkers();
await workers.emailWorker.close();
await workers.scrapingWorker.close();
await workers.workflowWorker.close();
process.exit(0);
};
process.on("SIGTERM", shutdown);
process.on("SIGINT", shutdown);
} catch (error) {
console.error("Failed to start worker:", error);
process.exit(1);
}
}
main().catch((error) => {
console.error("Worker bootstrap failed:", error);
process.exit(1);
});