initial
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import { logger } from './rendertron.logging.js';
|
||||
import { Rendertron } from './rendertron.classes.rendertron.js';
|
||||
import * as plugins from './rendertron.plugins.js';
|
||||
|
||||
export class TaskManager {
|
||||
rendertronRef: Rendertron;
|
||||
public taskmanager: plugins.taskbuffer.TaskManager;
|
||||
|
||||
constructor(rendertronRefArg: Rendertron) {
|
||||
this.rendertronRef = rendertronRefArg;
|
||||
this.taskmanager = new plugins.taskbuffer.TaskManager();
|
||||
this.taskmanager.addAndScheduleTask(
|
||||
new plugins.taskbuffer.Task({
|
||||
name: 'prerenderLocalDomains',
|
||||
taskFunction: async () => {
|
||||
logger.log('info', `starting domain prerender in 5 seconds`);
|
||||
await plugins.smartdelay.delayFor(5000);
|
||||
// get projects from lele-pubapiclient
|
||||
const localDomains = []; // TODO: get from coreflow
|
||||
for (const project of localDomains) {
|
||||
logger.log('info', `Prerending project ${project.name} with url ${project.url}`);
|
||||
const startTime = Date.now();
|
||||
await this.rendertronRef.prerenderManager.prerenderDomain(
|
||||
project.url.replace('https://', '')
|
||||
);
|
||||
logger.log(
|
||||
'info',
|
||||
`Prerended project ${project.name} with url ${project.url} in ${
|
||||
Date.now() - startTime
|
||||
}ms`
|
||||
);
|
||||
}
|
||||
},
|
||||
}),
|
||||
'0 */30 * * * *'
|
||||
);
|
||||
this.taskmanager.addAndScheduleTask(
|
||||
new plugins.taskbuffer.Task({
|
||||
name: 'CleanupPrerenderResults',
|
||||
taskFunction: async () => {
|
||||
logger.log('info', `starting to delete old PrerenderResults in 5 seconds`);
|
||||
await plugins.smartdelay.delayFor(2000);
|
||||
await this.rendertronRef.prerenderManager.cleanPrerenderResults();
|
||||
logger.log('success', `cleaned old prerender results`);
|
||||
},
|
||||
}),
|
||||
'0 0 1 * * *'
|
||||
);
|
||||
}
|
||||
|
||||
public async start() {
|
||||
this.taskmanager.start();
|
||||
logger.log('info', 'triggering initial prerender task outside of schedule');
|
||||
this.taskmanager.triggerTaskByName('prerenderLocalDomains');
|
||||
}
|
||||
|
||||
public async stop() {
|
||||
this.taskmanager.stop();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user