• Flask 上下文管理


    简单阐述:

    1、'请求刚进来':
         将request,session封装在RequestContext类中
         app,g封装在AppContext类中
         并通过LocalStack将requestcontext和appcontext放入Local类中
    2、'视图函数中':
         通过localproxy--->偏函数--->localstack--->local取值
    3、'请求响应时':
          先执行save.session()再各自执行pop(),将local中的数据清
    

    偏函数:

    from functools import partial,reduce
    
    def fun(a,b):
        print(a)
        print(b)
        return a+b
    
    new_fun=partial(fun,10)
    ret=new_fun(20)   #将函数作为第一项作为参数
    print(ret)
    

    reduce函数使用

    res=reduce(lambda a,b:a+b,[1,2,3,4,5,6,7,8])
    print(res)
    #所有数相加
    

    函数基础

    class MyClass(object):
        def __call__(self, *args, **kwargs):
            print(66666)
    
        def __setattr__(self, key, value):
            print(key,value)
    
        def __getattr__(self, item):
            print(item)
    
        def __setitem__(self, key, value):
            print(key,value,"item")
    
        def __getitem__(self, item):
            print(item,"item")
    
    foo=MyClass()
    foo()           #执行的是__call__方法
    foo.name        #执行的是__getattr__
    foo.name="小王"  #执行的是__setaattr__
    foo["name"]      #执行的是__getitem__
    foo["name"]="小王"   #执行的是__setitem__
    #实例化类的时候先执行__new__方法没写默认执行object.__new__,在执行实例化对象的__init__实例化单例
    

    自己写一个栈:

    # LocalStack
    
    from threading import get_ident   #一如获取线程id
    import threading
    
    
    class MyLocalStack(object):
    
        storage={}
    
        def push(self,item):
            try:
                self.storage[get_ident()].append(item)
            except:
                self.storage[get_ident()]=[item]
    
        def top(self):
            return self.storage[get_ident()].pop()
    
    
    my_local_stack = MyLocalStack()
    
    import time
    def go(i):
        my_local_stack.push(i)
        # time.sleep(1)
        # my_local_stack.top()
    
    
    for i in range(5):
        th = threading.Thread(target=go,args=(i,))
        th.start()
    
    
    print(my_local_stack.storage)
  • 相关阅读:
    Spring cloud:熔断器-客户端降级
    Spring cloud:熔断器-服务端降级
    Spring cloud:服务调用-声明式客户端访问
    Spring cloud:服务调用-服务名访问
    Spring cloud:服务调用-IP访问
    Spring cloud:支付微服务-服务注册
    Spring cloud:支付微服务-支付
    Spring cloud:支付微服务-创建
    python读取数据库mysql报错
    自动化测试注意事项
  • 原文地址:https://www.cnblogs.com/litieshuai/p/10451659.html
Copyright © 2020-2023  润新知