zoukankan      html  css  js  c++  java
  • 装饰器

    装饰器

    廖雪峰python网站学习:https://www.liaoxuefeng.com/wiki/1016959663602400/1017451662295584

    在不改变原函数情况下进行功能扩展。
    这个不改变包括函数内部的逻辑,和函数的调用代码。
    只需要在原来函数上方加一个魔术方法。

    ** 设计一个装饰器,使api请求资源时会读取缓存,并且可以设置缓存的超时时间。**

    """设计一个装饰器,使api请求资源时会读取缓存,并且可以设置缓存的超时时间"""
    import time
    from datetime import datetime
    
    from flask import Flask
    
    app = Flask(__name__)
    created = 0
    cache_response = None
    
    
    def cache(timeout=5):
        """缓存请求的资源,默认缓存失效时间为5秒"""
        def decorator(func):
            def wrapper(*arg, **kwargs):
                global created, cache_response
                now = time.time()
                if now - created > timeout:
                    created = now
                    cache_response = func(*arg, **kwargs)
    
                return cache_response
            return wrapper
        return decorator
    
    # 添加header的装饰器
    def set_header(headers):
        def decorator(func):
            def wrapper(*args, **kwargs):
                response = func(*args, **kwargs)
                response.headers.update(headers)
                return response
            wrapper.__name__ = func.__name__
            return wrapper
    
        return decorator
    
    
    @app.route('/')
    @cache(15)
    def index():
        return datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " > Hello! "
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    回忆滋润坚持
  • 相关阅读:
    poj 1840(五元三次方程组)
    Selenium(二)开发环境的搭建
    Selenium(一)自动化测试简介
    (二)AppScan使用教程
    (一)AppScan的安装及破解
    (一)python3.7的安装
    读完《大道至简》后的反思
    BZOJ3585: mex
    BZOJ3544: [ONTAK2010]Creative Accounting
    BZOJ3531: [Sdoi2014]旅行
  • 原文地址:https://www.cnblogs.com/james5d/p/14204196.html
Copyright © 2011-2022 走看看