5.4 梳理串接flask的一些名词

1.线程隔离对象和被线程隔离的对象

  • 线程隔离对象:Local,LocalStack这些,通过他们创建被线程隔离的对象

  • 被线程隔离的对象:RequestContext,AppContext

2.current_app是被线程隔离的对象吗

不是。 current_app是_app_ctx_stack的栈顶元素的app对象。他是全局唯一的,所以他不是线程隔离的对象,把他做成线程隔离的也没有意义,因为在字典中不同的线程id号指向的仍然是同一个对象。

3.关键词梳理

  • 以线程ID号作为key的字典->Local->LocalStack

  • AppContext,RequestContext -> LocalStack

  • Flask->AppContext,Request->RequestContext

  • current_app(LocalStack.top=AppContext,top.app=Flask)

  • request(LocalStack.top=RequestContext,top.request=Request)

Last updated