作家
登录

Flask中的请求上下文和应用上下文

作者: 来源: 2017-05-11 16:04:38 阅读 我要评论

Flask中的请求高低文和应用高低文

在Flask中处理请求时,应用会生成一个“请求高低文”对象。全部请求的处理过程,都邑在这个高低文对象中进行。这包管了请求的处理过程不被干扰。处理请求的具体代码如下:

  1. def wsgi_app(self, environ, start_response): 
  2.  
  3.     with self.request_context(environ): 
  4.  
  5.         # with语句中生成一个`response`对象 
  6.  
  7.         ... 
  8.  
  9.     return response(environ, start_response)  

在Flask 0.9版本之前,应用只有“请求高低文”对象,它包含了和请求处理相干的信息。同时Flask还根据werkzeug.local模块中实现的一种数据构造LocalStack用来存储“请求高低文”对象。这在《一个Flask应用运行过程分析 》中有所介绍。在0.9版本中,Flask又惹人了“应用高低文”的概念。本文重要Flask中的┞封两个“高低文”对象。

LocalStack

在介绍“请求高低文”和“应用高低文”之前,我们对LocalStack扼要做一个回想。在Werkzeug库——local模块一文中,我们讲解了werkzeug.local模块中实现的三个类Local、LocalStack和LocalProxy。关于它们的概念和具体介绍,可以查看膳绫擎的文┞仿。这里,我们用一个例子来解释Flask中应用的一种数据构造LocalStack。

  1. >>> from werkzeug.local import LocalStack 
  2.  
  3. >>> import threading 
  4.  
  5.   
  6.  
  7. # 创建一个`LocalStack`对象 
  8.  
  9. >>> local_stack = LocalStack() 
  10.  
  11. # 查看local_stack中存储的信息 
  12.  
  13. >>> local_stack._local.__storage__ 
  14.  
  15. {} 
  16.  
  17.   
  18.  
  19. # 定义一个函数,这个函数可以向`LocalStack`中添加数据 
  20.  
  21. >>> def worker(i): 
  22.  
  23.         local_stack.push(i) 
  24.  
  25.   
  26.  
  27. # 应用3个线程运行函数`worker` 
  28.  
  29. >>> for i in range(3): 
  30.  
  31.         t = threading.Thread(target=worker, args=(i,)) 
  32.  
  33.         t.start() 
  34.  
  35.   
  36.  
  37. # 再次查看local_stack中存储的信息 
  38.  
  39. >>> local_stack._local.__storage__ 
  40.  
  41. {<greenlet.greenlet at 0x4bee5a0>: {'stack': [2]}, 
  42.  
  43. <greenlet.greenlet at 0x4bee638>: {'stack': [1]}, 
  44.  
  45. <greenlet.greenlet at 0x4bee6d0>: {
     1/11    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      2025年全球数据将攀升至163ZB,10倍的数据增长来源于哪?

    【51CTO.com原创稿件】比来,希捷科技与IDC合营宣布了一份名为《数据时代2025》的数据成长趋势申报,这份白皮>>>详细阅读


    本文标题:Flask中的请求上下文和应用上下文

    地址:http://www.17bianji.com/lsqh/35165.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)