init:taskbot 1.1.0
This commit is contained in:
34
src/utils/circuitBreaker.js
Normal file
34
src/utils/circuitBreaker.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const logger = require('./logger');
|
||||
const config = require('../config/env');
|
||||
|
||||
//全局限流配置
|
||||
let requestCount = 0;
|
||||
let lastResetTime = Date.now();
|
||||
|
||||
//熔断检查器
|
||||
function checkCircuitBreaker() {
|
||||
const now = Date.now();
|
||||
if (now - lastResetTime > config.app.rate) {
|
||||
requestCount = 0;
|
||||
lastResetTime = now;
|
||||
}
|
||||
requestCount++;
|
||||
if (requestCount > config.app.maxRequests) {
|
||||
const msg = `Circuit breaker triggered: Exceeded ${config.app.maxRequests} requests in ${config.app.rate/1000}s. Exiting...`;
|
||||
|
||||
//同步写入fatal日志
|
||||
logger.fatal("============================");
|
||||
logger.fatal(`${msg}`);
|
||||
logger.fatal("============================");
|
||||
if (!config.app.debugMode) {
|
||||
process.exit(1);
|
||||
} else {
|
||||
logger.warn('Debug mode enabled, not exiting.');
|
||||
requestCount = 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
module.exports = { checkCircuitBreaker };
|
||||
Reference in New Issue
Block a user