@morjs/utils
Version:
mor utils
31 lines • 1.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.QUEUE = exports.DEFAULT_CONCURRENCY = void 0;
const os_1 = __importDefault(require("os"));
const p_queue_1 = __importDefault(require("p-queue"));
const constants_1 = require("./constants");
/**
* 基于内存的默认并发数
*/
const DEFAULT_CONCURRENCY_BY_MEM = Math.floor(os_1.default.totalmem() / 1073741824 / 2);
/**
* 基于CPU数量的默认并发数
*/
const DEFAULT_CONCURRENCY_BY_CPUS = Math.floor(os_1.default.cpus().length / 2);
/**
* 默认并发数, 最大允许 8 个并发
*/
exports.DEFAULT_CONCURRENCY = Math.min(DEFAULT_CONCURRENCY_BY_MEM, DEFAULT_CONCURRENCY_BY_CPUS, 8) || 1;
/**
* 模块处理队列
*/
exports.QUEUE = new p_queue_1.default({
concurrency: exports.DEFAULT_CONCURRENCY,
// 过期时间设置为 2倍 x (重试次数+1) x COMMAND_TIMEOUT
timeout: constants_1.COMMAND_TIMEOUT * (constants_1.RETRY_TIMES + 1) * 2,
throwOnTimeout: true
});
//# sourceMappingURL=queue.js.map