在 Python 中定义支持用户速率限制检查的数据结构的程序
假设我们要开发一个数据结构,它可以建立一个过期时间,并支持一个接受用户ID和时间戳的函数。这将检查在给定时间戳的时间具有给定user_id的用户请求是否失败。只有当用户成功请求少于给定的过期时间时才会失败。
因此,如果输入类似于expire=6则构造一个对象obj,并调用函数obj.limit(0,10)、obj.limit(0,16)、obj.limit(0,17)和obj.limit(1,20),那么输出将分别为False、False、True和False,因为对于用户0,最初没有请求存在所以它是假的,然后在时间16不大于上次请求10的过期时间6,但是在17时它是真的,对于最后一个请求,它是针对用户1的,所以初始请求是假的。
示例
让我们看看以下实现以获得更好的理解-
from collections import defaultdict
class RateLimit:
def __init__(self, expire):
self.expire= expire
self.lastCall= defaultdict(lambda: -1)
def limit(self, uid, timestamp):
last = self.lastCall[uid]
if last == -1 or last +self.expire<= timestamp:
self.lastCall[uid] = timestamp
return False
return True
expire = 6
obj = RateLimit(expire)
print(obj.limit(0,10))
print(obj.limit(0,16))
print(obj.limit(0,17))
print(obj.limit(1,20))输入
RateLimit(6) obj.limit(0,10) obj.limit(0,16) obj.limit(0,17) obj.limit(1,20)输出结果
False False True False
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短