Flask 上下文管理-- (session,request,current_app的传递)

书到用时方恨少,事非经过不知难。这篇文章主要讲述Flask 上下文管理-- (session,request,current_app的传递)相关的知识,希望能为你提供帮助。
Flask session,request,current_app的传递

1 flask的 request, session 和 current_app 都是 设置方式比较新颖 -- 通过上下文管理的方式实现的

每次请求进来app.run调用 call 方法, 创建 一个本地线程(唯一标识作为键) -- 然后把实例化的对象push到一个地方,在请求结束后返回的时候 pop 掉local = { ' 标识' :{' stack' :[RequestContext(),]} }

【Flask 上下文管理-- (session,request,current_app的传递)】2 补充 partial 函数
其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。from functools import partialdef f(a,b): return a + bf1 = partial(f,10)print(f1(5)) --> > 15

3 唯一标识
theading_local--> > 每一个线程 创建一个from greenlet import getcurrent as get_ident 可以基于 greenlet --> > 粒度更细比如 wsgi-- 有基于线程的,也有基于协程实现的本地线程:import threadinglocal_values = threading.local()def func(num): local_values.name = num import time time.sleep(1) print(local_values.name, threading.current_thread().name)for i in range(20): th = threading.Thread(target=func, args=(i,), name=' 线程%s' % i) th.start()



    推荐阅读