redis队列限制流量
def bool_frequency(self):
"""
访问频率限制
"""
redis_conn = get_redis_connection('default')
redis_list_len = redis_conn.llen(self.redis_key)
now = (int(round(time.time() * 1000000)))
if redis_list_len < self.NUM_LIMIT:
redis_conn.lpush(self.redis_key, now)
redis_conn.expire(self.redis_key, 60)
else:
last_time = redis_conn.lindex(self.redis_key, -1)
if (now - int(last_time)) < (int(1 * 1000000)):
return False # 超过访问限制,这次请求被抛弃
else:
redis_conn.lpush(self.redis_key, now)
redis_conn.ltrim(self.redis_key, 0, self.NUM_LIMIT - 1) # 等于抛弃了最后一个
return True