Rename directory from email-server-worker to email-worker for clarity and brevity. Update all references in CLAUDE.md documentation.
36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { RequestHandler, Router } from "express";
|
|
import { workerRunnerInfo } from "../workRunner";
|
|
import { coalesce } from "../lib/initTools";
|
|
|
|
const PULL_INTERVAL = parseInt(coalesce(process.env.PULL_INTERVAL, "10000"));
|
|
|
|
/** Maximum time between two worker jobs */
|
|
const MAX_WORKER_LATENCY = PULL_INTERVAL * 2.5;
|
|
|
|
/**
|
|
* Router koji se izvršava u slučaju grube greške koja nije obrađena nigdje prije
|
|
* @param req express request
|
|
* @param res express response
|
|
* @param next
|
|
*/
|
|
export const healthcheckRouter:RequestHandler = async (req, res, next) => {
|
|
const workerLatency = Date.now() - workerRunnerInfo.lastWorkTime;
|
|
|
|
if(workerLatency > MAX_WORKER_LATENCY) {
|
|
const msg = `No work done in ${workerLatency}ms. Last worker status = "${workerRunnerInfo.status}"`;
|
|
|
|
console.warn(msg)
|
|
|
|
res.status(500);
|
|
res.setHeader('Content-Type', 'text/plain');
|
|
res.end(msg);
|
|
} else {
|
|
res.status(200);
|
|
res.setHeader('Content-Type', 'text/plain');
|
|
res.end('OK');
|
|
}
|
|
};
|
|
|
|
export const pingRouter = Router();
|
|
pingRouter.get('/', healthcheckRouter);
|