zoukankan      html  css  js  c++  java
  • flask的上下文以及结构关系

    1.分类

    flask中有两种上下文:application_context(应用上下文),request_context(请求上下文),其中应用上下文就是一个flask实例app的上下文,请求上下文就是在这个app实例上线工作后,有一个访问请求过来,就会创建一个request_context。

    *什么是上下文

      在计算机中,相对于进程而言,上下文就是进程执行时的环境。这个环境保存了各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。可以理解上下文是环境的一个快照,是一个用来保存状态的对象。

      例如从一个 Flask App 读入配置并启动开始,就进入了它的 application_context,在他的全局中有各种各样的数据和变量存在,这个app只要不消亡或者重启,这些变量都保存在这个上下文中(类比计算机:某个程序运行时,它的变量都在给他分配的一块内存空间中,这个内存空间就是上下文),当app实例消亡或重启(我们这个网站后台关闭或重启),则上下文清空,将内存空间还给服务器。

      例如有一个用户访问一次我们的网站www.xxxx.com/login,那么他这一次访问(仅仅这一次)就生成了一个request_context,这个请求上下文就是在他这次访问中生成的,这个访问结束,请求上下文消亡。Flask的request对象只有在其请求上下文的生命周期内才有效,离开了请求的生命周期,其上下文环境不存在了,也就无法获取request对象了。(request对象指的是每次http请求发生时,WSGI server(比如gunicorn)调Flask.call()之后,在Flask对象内部创建的Request对象)

    2.理解flask的设计结构

    *为什么要有application_context呢

      因为,flask在设计的时候,就考虑到,可能我们的服务器上面不仅仅只部署一个WSGI程序,也就是一个服务器,我们可以同时部署几个不同的网站工作。

    *application_context和request_context的关系是什么

      在一个app的生命周期中,会有很多的request生成,会有很多的request_context生成,我们将app和服务器和request的关系用图表示 

      一个服务器可以部署多个app应用(多个网站后台),每个app中会因访问产生多个request。不同app之间,同一个app中不同的request之间,都是隔离的。

      (application的生命周期大于request,一个application存活期间,可能发生多次http请求,所以,也就会有多个request)

  • 相关阅读:
    win10安装mysql5.7.20解压版
    mvn snapshot
    git SSH key
    Grails踩坑记
    oracle数据库中使用hibernate生成表不能正确创建表
    有些人
    制定短期计划(3月9-4.29)
    有些话
    Linux中mysql主从复制
    Linux下安装mysql
  • 原文地址:https://www.cnblogs.com/DylanHooz/p/8433672.html
Copyright © 2011-2022 走看看