我们正在尝试各种方法来限制用户在给定时间段内的操作:
目前,我们正在使用Cache来简单地插入用户活动的记录 - 如果用户执行相同活动时存在该记录,我们就会加油.
使用缓存自动为我们提供过时的数据清理和用户的滑动活动窗口,但它如何扩展可能是一个问题.
还有哪些其他方法可以确保可以有效地限制请求/用户操作(强调稳定性)?
我可以使用一些伪代码,或者更好的Python.我正在尝试为Python IRC机器人实现速率限制队列,它部分工作,但如果有人触发的消息少于限制(例如,速率限制是每8秒5条消息,而此人只触发4条消息),并且下一个触发器超过8秒(例如,16秒之后),机器人发送消息,但是队列变满并且机器人等待8秒,即使自8秒时间段已经过去也不需要它.
我需要一个组件/类来限制某些方法的执行到N秒内的最大M次调用(或ms或nanos,无关紧要).
换句话说,我需要确保我的方法在N秒的滑动窗口中执行不超过M次.
如果您不知道现有的课程,请随时发布您的解决方案/想法如何实现这一点.
有一个非常好的库WebApiThrottle用于 Web API 中的 API 速率限制。
正如在 Wiki 页面上提到的,我可以根据 API 调用的授权令牌标头对 API 进行速率限制。
但是,如果此 api 速率限制超过,我如何在接下来的 5 分钟内阻止 api 调用?此外,在接下来的 5 分钟内的任何请求都不会重置超过时间的速率限制。
我检查了代码,但找不到此功能。如果有人可以建议,还有其他方法吗?