装饰器的应用场景

# 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. 装饰类,创建单例模式

复制代码
# 普通装饰器
# 单例案例:
存在的问题:这种情况下装饰的类,不能被外界引用
# 特殊装饰器

复制代码

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   张京墨  阅读(814)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
点击右上角即可分享
微信分享提示