zoukankan      html  css  js  c++  java
  • 装饰器的应用场景

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

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

  • 相关阅读:
    序列
    2018131
    成都七中
    NOIP2017
    洛谷P1352 CodeVS1380 没有上司的舞会
    BZOJ1087 SCOI2005 互不侵犯King
    11-4-2017 星期六 R-Day?
    11-3-2017 星期五
    11-2-2017 星期四
    USACO 2014 US Open, Silver Problem 2. Dueling GPSs
  • 原文地址:https://www.cnblogs.com/meloncodezhang/p/11923196.html
Copyright © 2011-2022 走看看