网站中经常需要用到网站限流,例如限制用户恶意爬虫获取网页信息以及在网站访问流量大时限制访问频率等等,这里使用redis做一个简单的网站登录限制案例。
一、使用EXPIRE进行访问频率限制
逻辑:用户登入网页,判断是否为第一次登入,如果是,创建一个新键记录访问次数为1,并设置超时时间。后面再登入时先判断键是否存在且大于访问次数限制,如果是的话,返回错误,否则就把访问次数+1,返回正常页面。
# -*- coding: utf8 -*-
import web
import redis
"""
LIMIT_TIME:在多长的时间范围内
LIMIT_TIMES:最多访问多少次
"""
LIMIT_TIMES = 3
LIMIT_TIME = 60
conn = redis.StrictRedis()
"""
路由处理
"""
urls = (
"/", "Index"
)
class Index:
@staticmethod
def __mk_h1(data):
return "<title>HelloWorld</title><div align=center><h1>%s</h1></div>" % data
def __not_first_visit(self, key_name, user):