apaas-oapi-client 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +27 -1
- package/package.json +1 -1
- package/src/index.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var dayjs = require('dayjs');
|
|
4
4
|
var axios = require('axios');
|
|
5
|
+
var Bottleneck = require('bottleneck');
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* 日志等级枚举
|
|
@@ -16,7 +17,32 @@ var LoggerLevel;
|
|
|
16
17
|
LoggerLevel[LoggerLevel["trace"] = 5] = "trace";
|
|
17
18
|
})(LoggerLevel || (LoggerLevel = {}));
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
/**
|
|
21
|
+
* 默认 apaas 限流配置
|
|
22
|
+
*/
|
|
23
|
+
const apaasLimiterOptions = {
|
|
24
|
+
minTime: 200, // 每秒最多发起 5 个数据库操作
|
|
25
|
+
reservoir: 20, // 最多同时查询 50 个数据库操作
|
|
26
|
+
reservoirRefreshAmount: 20, // 每次查询完毕后,重置为 50 个数据库操作
|
|
27
|
+
reservoirRefreshInterval: 1000 // 重置时间间隔为 1 秒
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 创建限流器
|
|
31
|
+
* @param fn 被限流函数
|
|
32
|
+
* @param options 自定义限流配置
|
|
33
|
+
* @returns 包装后的限流函数
|
|
34
|
+
*/
|
|
35
|
+
async function functionLimiter(fn, options = {}) {
|
|
36
|
+
const limiter = new Bottleneck({
|
|
37
|
+
minTime: options.minTime || apaasLimiterOptions.minTime,
|
|
38
|
+
reservoir: options.reservoir || apaasLimiterOptions.reservoir,
|
|
39
|
+
reservoirRefreshAmount: options.reservoirRefreshAmount || apaasLimiterOptions.reservoirRefreshAmount,
|
|
40
|
+
reservoirRefreshInterval: options.reservoirRefreshInterval || apaasLimiterOptions.reservoirRefreshInterval
|
|
41
|
+
});
|
|
42
|
+
const wrapped = limiter.wrap(fn);
|
|
43
|
+
return wrapped();
|
|
44
|
+
}
|
|
45
|
+
|
|
20
46
|
/**
|
|
21
47
|
* aPaaS OpenAPI 客户端
|
|
22
48
|
*/
|
package/package.json
CHANGED
package/src/index.ts
CHANGED