@tc-libs/task
v4.6.0
Published
Tracking stato e run di job/task schedulati o manuali.
Downloads
1,877
Readme
@tc-libs/task
Tracking stato e run di job/task schedulati o manuali.
Il package fornisce:
TaskModuleTaskServiceTaskRunService- entity/repository/controller admin
TaskService
Metodi specifici:
ensureTask(code, env)tryAcquireLock(code, env, staleMs)markSuccess(code, elapsedMs, env)markError(code, error, elapsedMs, env)
Uso tipico:
const task = await this.taskService.ensureTask('SYNC_USERS', 'prod');
const lock = await this.taskService.tryAcquireLock('SYNC_USERS', 'prod', 300000);
if (!lock) return;Questo permette di evitare run concorrenti della stessa task.
TaskRunService
Gestisce le esecuzioni singole:
startRun(task)endRun(runId, elapsedMs)failRun(runId, error, elapsedMs)
Esempio:
const run = await this.taskRunService.startRun(task);
try {
// esegui job
await this.taskRunService.endRun(run._id.toString(), elapsedMs);
await this.taskService.markSuccess(task.code, elapsedMs, task.env);
} catch (error) {
await this.taskRunService.failRun(run._id.toString(), error, elapsedMs);
await this.taskService.markError(task.code, error, elapsedMs, task.env);
}Stati task
TASK_STATUS_ENUM:
IDLERUNNINGCOMPLETEDFAILED
Nel servizio attuale il lock usa soprattutto IDLE e RUNNING.
Sviluppo
nx build task
nx test task