update: add auth messages clean service for periodic expired auth messages clean
This commit is contained in:
parent
094cc327d7
commit
2ea7db5154
3 changed files with 58 additions and 1 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import { Transaction } from 'sequelize';
|
||||
import { Op, Transaction } from 'sequelize';
|
||||
|
||||
import AuthMessage from '@/schemes/AuthMessage';
|
||||
|
||||
|
|
@ -68,6 +68,20 @@ class AuthMessagesModel {
|
|||
transaction,
|
||||
});
|
||||
};
|
||||
|
||||
deleteAllExpired = async (
|
||||
{ now }: { now: Date },
|
||||
{ transaction }: { transaction?: Transaction } = {},
|
||||
): Promise<void> => {
|
||||
await AuthMessage.destroy({
|
||||
where: {
|
||||
expires_at: {
|
||||
[Op.lt]: now,
|
||||
},
|
||||
},
|
||||
transaction,
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
const authMessagesModel = new AuthMessagesModel();
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import express from 'express';
|
|||
import http from 'http';
|
||||
import { Server } from 'socket.io';
|
||||
|
||||
import authMessagesCleanService from '@/workers/authMessagesCleanService';
|
||||
import authRouter from './routes/auth.router';
|
||||
import offersRouter from './routes/offers.router';
|
||||
import userRouter from './routes/user.router';
|
||||
|
|
@ -73,6 +74,7 @@ process.on('unhandledRejection', (reason, promise) => {
|
|||
|
||||
assetsUpdateChecker.run();
|
||||
ordersModerationService.run();
|
||||
authMessagesCleanService.run();
|
||||
exchangeModel.runPairStatsDaemon();
|
||||
statsModel.init();
|
||||
|
||||
|
|
|
|||
41
src/workers/authMessagesCleanService.ts
Normal file
41
src/workers/authMessagesCleanService.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import authMessagesModel from '@/models/AuthMessages';
|
||||
|
||||
const CLEAN_INTERVAL = 60 * 60 * 1000; // 1 hour
|
||||
|
||||
class AuthMessagesCleanService {
|
||||
run = async () => {
|
||||
console.log(
|
||||
`Auth messages clean service is running. Cleaning interval: ${CLEAN_INTERVAL / 1000} sec.`,
|
||||
);
|
||||
|
||||
async function clean() {
|
||||
console.log(`[${new Date()}] Cleaning auth messages...`);
|
||||
|
||||
await authMessagesModel.deleteAllExpired({ now: new Date() });
|
||||
|
||||
console.log(`[${new Date()}] Auth messages cleaned.`);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
while (true) {
|
||||
try {
|
||||
await clean();
|
||||
} catch (error) {
|
||||
console.log(
|
||||
`[${new Date()}] Error while cleaning auth messages. Continuing on next iteration. Error:`,
|
||||
);
|
||||
console.error(error);
|
||||
}
|
||||
|
||||
console.log(
|
||||
`[${new Date()}] Auth messages cleaned. Next cleaning in ${CLEAN_INTERVAL / 1000} sec.`,
|
||||
);
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, CLEAN_INTERVAL));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const authMessagesCleanService = new AuthMessagesCleanService();
|
||||
|
||||
export default authMessagesCleanService;
|
||||
Loading…
Add table
Reference in a new issue