NodeJS 频繁请求服务器限速工具
- 示范
const rate_limit=require('./RateLimitUtil')
//配置
rate_limit.config(5)
//执行
setInterval(function () {
if(rate_limit.isExecutable()){
console.log('现在的QPS是'+rate_limit.getQPS()+',允许执行')
//......你的业务逻辑
}else{
console.log('现在的QPS是'+rate_limit.getQPS()+'拒绝执行')
}
},100)
- 限速器代码
let conf={
qps:1000
}
let exeLog=new Array()
let fresh=function(){
let now=new Date().getTime()
now=now-now%1000
let top_limit=now+1000
let newExeLog=new Array()
for(let i=0;i<exeLog.length;i++)
{
let item=exeLog[i]
if(!(item>top_limit||item<now))
{
newExeLog.push(item)
}
}
exeLog=newExeLog
}
/*
是否可执行
true 没有超速
false 即将超速不允许执行
*/
let isExecutable=function () {
fresh()
if (getQPS()<conf.qps){
exeLog.push(new Date().getTime())
return true
}
return false
}
/*
获取现在的QPS
*/
let getQPS=function(){
return exeLog.length
}
/*
重置
*/
let reset=function(){
exeLog=new Array()
}
/*
配置qps
*/
let config=function (qps) {
conf.qps=qps
}
module.exports={
config:config,
isExecutable:isExecutable,
getQPS:getQPS,
reset:reset
}
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039691
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~