chore: Refactor worker, emails and data cleanup to task system (#3337)
* Refactor worker, all emails on task system * fix * lint * fix: Remove a bunch of expect-error comments in related tests * refactor: Move work from utils.gc into tasks * test * Add tracing to tasks and processors fix: DebounceProcessor triggering on all events Event.add -> Event.schedule
This commit is contained in:
36
server/queues/tasks/BaseTask.ts
Normal file
36
server/queues/tasks/BaseTask.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { JobOptions } from "bull";
|
||||
import { taskQueue } from "../";
|
||||
|
||||
export enum TaskPriority {
|
||||
Background = 40,
|
||||
Low = 30,
|
||||
Normal = 20,
|
||||
High = 10,
|
||||
}
|
||||
|
||||
export default abstract class BaseTask<T> {
|
||||
public static schedule<T>(props: T) {
|
||||
// @ts-expect-error cannot create an instance of an abstract class, we wont
|
||||
const task = new this();
|
||||
return taskQueue.add(
|
||||
{
|
||||
name: this.name,
|
||||
props,
|
||||
},
|
||||
task.options
|
||||
);
|
||||
}
|
||||
|
||||
public abstract perform(props: T): Promise<void>;
|
||||
|
||||
public get options(): JobOptions {
|
||||
return {
|
||||
priority: TaskPriority.Normal,
|
||||
attempts: 5,
|
||||
backoff: {
|
||||
type: "exponential",
|
||||
delay: 60 * 1000,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user