mirror of
https://github.com/movie-web/backend.git
synced 2025-09-13 13:03:26 +00:00
Give jobs an ID
This commit is contained in:
@@ -9,8 +9,6 @@ const maxOffset = 60 * 4;
|
||||
const secondsOffset =
|
||||
Math.floor(Math.random() * (maxOffset - minOffset)) + minOffset;
|
||||
|
||||
const log = scopedLogger('jobs');
|
||||
|
||||
const wait = (sec: number) =>
|
||||
new Promise<void>((resolve) => {
|
||||
setTimeout(() => resolve(), sec * 1000);
|
||||
@@ -20,11 +18,12 @@ const wait = (sec: number) =>
|
||||
* @param cron crontime in this order: (min of hour) (hour of day) (day of month) (day of week) (sec of month)
|
||||
*/
|
||||
export function job(
|
||||
name: string,
|
||||
id: string,
|
||||
cron: string,
|
||||
cb: (ctx: { em: EntityManager; log: Logger }) => Promise<void>,
|
||||
): CronJob {
|
||||
log.info(`Registering job '${name}' with cron '${cron}'`);
|
||||
const log = scopedLogger('jobs', { jobId: id });
|
||||
log.info(`Registering job '${id}' with cron '${cron}'`);
|
||||
return CronJob.from({
|
||||
cronTime: cron,
|
||||
onTick: async () => {
|
||||
@@ -35,10 +34,10 @@ export function job(
|
||||
// actually run the job
|
||||
try {
|
||||
const em = getORM().em.fork();
|
||||
log.info(`Starting job '${name}' with cron '${cron}'`);
|
||||
await cb({ em, log });
|
||||
log.info(`Starting job '${id}' with cron '${cron}'`);
|
||||
await cb({ em, log: log });
|
||||
} catch (err) {
|
||||
log.error(`Failed to run '${name}' job!`);
|
||||
log.error(`Failed to run '${id}' job!`);
|
||||
log.error(err);
|
||||
}
|
||||
},
|
||||
|
@@ -3,7 +3,7 @@ import { job } from '@/modules/jobs/job';
|
||||
|
||||
// every day at 12:00:00
|
||||
export const challengeCodeJob = job(
|
||||
'Challenge Code Expiry',
|
||||
'challenge-code-expiry',
|
||||
'0 12 * * *',
|
||||
async ({ em }) => {
|
||||
await em
|
||||
|
@@ -4,7 +4,7 @@ import { job } from '@/modules/jobs/job';
|
||||
|
||||
// every day at 12:00:00
|
||||
export const sessionExpiryJob = job(
|
||||
'Session Expiry',
|
||||
'session-expiry',
|
||||
'0 12 * * *',
|
||||
async ({ em, log }) => {
|
||||
const deletedSessions = await em
|
||||
|
@@ -4,7 +4,7 @@ import { job } from '@/modules/jobs/job';
|
||||
|
||||
// every day at 12:00:00
|
||||
export const userDeletionJob = job(
|
||||
'User Deletion',
|
||||
'user-deletion',
|
||||
'0 12 * * *',
|
||||
async ({ em, log }) => {
|
||||
const knex = em.getKnex();
|
||||
|
@@ -54,11 +54,12 @@ function createWinstonLogger() {
|
||||
return loggerObj;
|
||||
}
|
||||
|
||||
export function scopedLogger(service: string) {
|
||||
export function scopedLogger(service: string, meta: object = {}) {
|
||||
const logger = createWinstonLogger();
|
||||
logger.defaultMeta = {
|
||||
...logger.defaultMeta,
|
||||
svc: service,
|
||||
...meta,
|
||||
};
|
||||
return logger;
|
||||
}
|
||||
|
Reference in New Issue
Block a user