装饰器的应用场景
# 1. 测试代码的运行时间
import time def outter(func): def inner(*args,**kwargs): s = time.time() func() e = time.time() return e - s return inner @outter def demo(): for i in range(1000000): pass t = demo() print(t)
# 结果
0.022935152053833008
# 2. 限制访问
from flask import Flask,request app = Flask(__name__) @app.route("/") def index(): print(request.host) print(request.host_url) # 怎么设置一个逻辑,同一个host一秒钟访问次数超过10次,认为是非人为操作,然后拉入黑名单,12个小时候才能继续访问。 # 方式一,将访问的ip插入到redis中,设置过期时间为1/10s,若插入成功,就可以继续访问,插入失败就返回请求过于频繁。 # 对每一个网页的话都限制IP的话,就要封装一个装饰器,请求前先进行ip检查,flask中的请求钩子,before_request,是否合理 # 方式二, return "welcome to flask" if __name__ == '__main__': app.run(debug=True)
# 3. 判断是否是登录的状态
# 4. 装饰类,创建单例模式
# 普通装饰器
# 单例案例:

存在的问题:这种情况下装饰的类,不能被外界引用 # 特殊装饰器
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想