Flask之Flask类
来源:互联网 发布:管道绘图软件 编辑:程序博客网 时间:2024/06/05 06:48
使用Flask框架时,Flask是首要入口,使用方法类似下面:
from flask import Flask app = Flask(__name__) @app.route("/") def index(): passif __name__ == '__main__': app.run(debug=True)
Flask.run()方法核心就是werkzeug库的run_simple()方法,请参考另外一篇文章分析
Flask类定义如下图所示:
其中,方法wsgi_app是由HTTPServer进行回调的方法,由另外文章分析可知,HTTPServer套接字有网络请求时,最终会调用到到这个方法,所以这里是Flask处理的核心
def wsgi_app(self, environ, start_response): ctx = self.request_context(environ) ctx.push() error = None try: try: response = self.full_dispatch_request() except Exception as e: error = e response = self.handle_exception(e) except: error = sys.exc_info()[1] raise return response(environ, start_response) finally: if self.should_ignore_error(error): error = None ctx.auto_pop(error)首先,生成一个请求下上文对象,该对象保存了Flask实例、环境信息
其次,上下文对象放入公共栈中,这个栈以协程/线程ID隔离。
然后,处理该请求且没有一次发生,则生成一个Response返回
以上就是处理的基本框架。还有很多细节需要逐步分析才能明了
处理请求过程中,会依次执行before_first_request_funcs--》url_value_preprocessors--》before_request_funcs--》view_functions--》after_request_funcs列表中的函数。
before_first_request_funcs:初始化为空列表[],用户自定义方法时,直接将函数添加到列表中。函数类型def func()
url_value_preprocessors:初始化为空字典{},用户添加自定义方法时,url_value_preprocessors值变为{None: []},所有的方法都添加到None数组中。方法类型为:def func(endpoint, *args)
before_request_funcs:初始化为空字典{},用户添加自定义方法时,before_request_funcs值变为{None: []},所有的方法都添加到None数组中。方法类型为def func()
after_request_funcs:初始化为空字典{},用户添加自定义方法时,after_request_funcs值变为{None: []},所有的方法都添加到None数组中。方法类型为def func(response)
- Flask之Flask类
- flask
- flask
- Flask
- Flask
- flask
- flask
- Flask
- Flask
- flask
- Flask
- flask
- Flask
- Flask
- flask
- Flask
- 【Flask】Flask之用户指导
- Flask学习记录之Flask-Login
- C/C++程序员必须熟练应用的开源项目
- POJ 3133 Manhattan Wiring(限制匹配的插头DP)
- C++Vector用法
- Linux下查看机器配置
- Java多线程(三)
- Flask之Flask类
- DOM补充
- Java学习中关于泛型2
- shiro ehcache
- spring date jpa 实现动态查询
- linux编程——I/O操作之文件阻塞|非阻塞
- Docker 基本操作命令
- 利用ARP欺骗+sslsplit实现ssl连接嗅探
- linux常用基础命令