Feature/migrate historical market data gathering to queue design pattern (#991)
* Migrate historical market data gathering to queue * Filter and delete jobs * Detect duplicate jobs * Update changelog
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import { DataSource } from '@prisma/client';
|
||||
import { JobOptions, JobStatus } from 'bull';
|
||||
import ms from 'ms';
|
||||
|
||||
import { ToggleOption } from './types';
|
||||
|
||||
@@ -43,19 +45,52 @@ export const warnColorRgb = {
|
||||
export const ASSET_SUB_CLASS_EMERGENCY_FUND = 'EMERGENCY_FUND';
|
||||
|
||||
export const DATA_GATHERING_QUEUE = 'DATA_GATHERING_QUEUE';
|
||||
export const DATA_GATHERING_QUEUE_PRIORITY_LOW = Number.MAX_SAFE_INTEGER;
|
||||
export const DATA_GATHERING_QUEUE_PRIORITY_HIGH = 1;
|
||||
|
||||
export const DEFAULT_DATE_FORMAT_MONTH_YEAR = 'MMM yyyy';
|
||||
|
||||
export const GATHER_ASSET_PROFILE_PROCESS = 'GATHER_ASSET_PROFILE';
|
||||
export const GATHER_ASSET_PROFILE_PROCESS_OPTIONS: JobOptions = {
|
||||
attempts: 20,
|
||||
backoff: {
|
||||
delay: ms('1 minute'),
|
||||
type: 'exponential'
|
||||
},
|
||||
priority: DATA_GATHERING_QUEUE_PRIORITY_HIGH,
|
||||
removeOnComplete: {
|
||||
age: ms('2 weeks') / 1000
|
||||
}
|
||||
};
|
||||
export const GATHER_HISTORICAL_MARKET_DATA_PROCESS =
|
||||
'GATHER_HISTORICAL_MARKET_DATA';
|
||||
export const GATHER_HISTORICAL_MARKET_DATA_PROCESS_OPTIONS: JobOptions = {
|
||||
attempts: 20,
|
||||
backoff: {
|
||||
delay: ms('1 minute'),
|
||||
type: 'exponential'
|
||||
},
|
||||
priority: DATA_GATHERING_QUEUE_PRIORITY_LOW,
|
||||
removeOnComplete: {
|
||||
age: ms('2 weeks') / 1000
|
||||
}
|
||||
};
|
||||
|
||||
export const PROPERTY_BENCHMARKS = 'BENCHMARKS';
|
||||
export const PROPERTY_COUPONS = 'COUPONS';
|
||||
export const PROPERTY_CURRENCIES = 'CURRENCIES';
|
||||
export const PROPERTY_IS_READ_ONLY_MODE = 'IS_READ_ONLY_MODE';
|
||||
export const PROPERTY_LAST_DATA_GATHERING = 'LAST_DATA_GATHERING';
|
||||
export const PROPERTY_LOCKED_DATA_GATHERING = 'LOCKED_DATA_GATHERING';
|
||||
export const PROPERTY_SLACK_COMMUNITY_USERS = 'SLACK_COMMUNITY_USERS';
|
||||
export const PROPERTY_STRIPE_CONFIG = 'STRIPE_CONFIG';
|
||||
export const PROPERTY_SYSTEM_MESSAGE = 'SYSTEM_MESSAGE';
|
||||
|
||||
export const QUEUE_JOB_STATUS_LIST = <JobStatus[]>[
|
||||
'active',
|
||||
'completed',
|
||||
'delayed',
|
||||
'failed',
|
||||
'paused',
|
||||
'waiting'
|
||||
];
|
||||
|
||||
export const UNKNOWN_KEY = 'UNKNOWN';
|
||||
|
@@ -1,7 +1,5 @@
|
||||
export interface AdminData {
|
||||
dataGatheringProgress?: number;
|
||||
exchangeRates: { label1: string; label2: string; value: number }[];
|
||||
lastDataGathering?: Date | 'IN_PROGRESS';
|
||||
settings: { [key: string]: boolean | object | string | string[] };
|
||||
transactionCount: number;
|
||||
userCount: number;
|
||||
|
@@ -1,5 +1,16 @@
|
||||
import { Job } from 'bull';
|
||||
import { Job, JobStatus } from 'bull';
|
||||
|
||||
export interface AdminJobs {
|
||||
jobs: Job<any>[];
|
||||
jobs: (Pick<
|
||||
Job<any>,
|
||||
| 'attemptsMade'
|
||||
| 'data'
|
||||
| 'finishedOn'
|
||||
| 'id'
|
||||
| 'name'
|
||||
| 'stacktrace'
|
||||
| 'timestamp'
|
||||
> & {
|
||||
state: JobStatus | 'stuck';
|
||||
})[];
|
||||
}
|
||||
|
Reference in New Issue
Block a user