link-stack/apps/bridge-worker/index.ts

59 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-04-21 16:59:50 +02:00
import { run, Runner, RunnerOptions } from "graphile-worker";
// import { parseCronItems } from "graphile-worker";
// import { initPgp } from "./db.js";
// import logger from "./logger.js";
// import workerUtils from "./utils.js";
// import { assertFfmpegAvailable } from "./lib/media-convert.js";
/*
2023-02-13 12:41:30 +00:00
const logFactory = (scope: any) => (level: any, message: any, meta: any) => {
const pinoLevel = level === "warning" ? "warn" : level;
const childLogger = logger.child({ scope });
if (meta) childLogger[pinoLevel](meta, message);
else childLogger[pinoLevel](message);
};
2024-04-21 16:59:50 +02:00
*/
const getConfig = (): RunnerOptions => {
// logger.info({ concurrency, pollInterval }, "Starting worker");
2023-02-13 12:41:30 +00:00
return {
2024-04-21 16:59:50 +02:00
concurrency: 10,
pollInterval: 1000,
// logger: new Worker.Logger(logFactory),
connectionString: process.env.DATABASE_URL,
2023-02-13 12:41:30 +00:00
// eslint-disable-next-line unicorn/prefer-module
taskDirectory: `${__dirname}/tasks`,
2024-04-21 16:59:50 +02:00
// parsedCronItems: parseCronItems(
// leafcutterEnabled
// ? [
// { task: "import-label-studio", pattern: "*/15 * * * *" },
// { task: "import-leafcutter", pattern: "*/17 * * * *" },
// ]
// : [],
// )
2023-02-13 12:41:30 +00:00
};
};
2024-04-21 16:59:50 +02:00
export const startWorker = async (): Promise<Runner> => {
2023-02-13 12:41:30 +00:00
const workerConfig = await configWorker();
const worker = await Worker.run(workerConfig);
return worker;
};
export const stopWorker = async (): Promise<void> => {
await worker.stop();
};
2024-04-21 16:59:50 +02:00
const main = async () => {
await worker.start();
process.on("SIGTERM", async () => {
await worker.stop();
process.exit(0);
});
};
2023-02-13 12:41:30 +00:00
2024-04-21 16:59:50 +02:00
main().catch((err) => {
console.error(err);
process.exit(1);
});