Flask session,request,current_app的传递
1 flask的 request, session 和 current_app 都是 设置方式比较新颖 -- 通过上下文管理的方式实现的
每次请求进来app.run调用 call 方法, 创建 一个本地线程(唯一标识作为键) -- 然后把实例化的对象push到一个地方,在请求结束后返回的时候 pop 掉
local = {
'标识':{'stack':[RequestContext(),]}
}
2 补充 partial 函数
其实就是函数调用的时候,有多个参数 参数,但是其中的一个参数已经知道了,我们可以通过这个参数重新绑定一个新的函数,然后去调用这个新函数。
from functools import partial
def f(a,b):
return a + b
f1 = partial(f,10)
print(f1(5))
-->> 15
3 唯一标识
theading_local -->> 每一个线程 创建一个
from greenlet import getcurrent as get_ident
可以基于 greenlet -->> 粒度更细
比如 wsgi -- 有基于线程的,也有基于协程实现的
本地线程:
import threading
local_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()