[1] tips

2021-07-26 11:18:15 浏览数 (1)

pipreq --》 requirement.txt

flask 闪现

before_requrst 多个 从上往下 process_request

after_request 多个 从下往上 process_response

before_first_request 项目启动访问的第一次

teardown_request 不管是否发生异常都会执行它下面的函数 after_request 不会执行 用作记录日志

errrorhandler 捕获错误并处理 提示或者返回其他页面 绑定错误的状态码

全局的标签和全局过滤器

flask 中间件 wsgi_app 和django的中间件完全不一样 flask 中间件就是猴子补丁的应用

app.run() -> app.__call__() --> self.wsgi_app()

自定义就是继承原来的的wsgi 调用的还是以前的,只不过在他上面或者下面写点东西

猴子补丁:只是一个概念,不属于任何包和模块

利用的 python 一切皆对象的理念 在程序运行过程中,动态修改方法

猴子补丁的用途:import u_json as json 会很多 就是修改项目里全部 from gevent import monkey

flask 蓝图 blueprint

没有蓝图之前都是单文件

有了蓝图之后都是 路由分发

from flask import Blueprint

order=Blueprint() 蓝图对象 蓝图对象注册路由

__init__.py 注册 注册蓝图对象 app.register_blueprint(蓝图对象) 先注册后使用

app 中 可以使用 before_request 等 请求扩展可以用,只是在当前管理下可以用

蓝图相当于dajngo 中的 app 分文件

app = Flask(__name__, template_folder='template', statics_floder='statics', )

模板文件 静态文件

app.register_blueprint(obj, url_prefix='/admin') 路由分发 路由前缀

伪静态 就是路由中加入 xxx.html

cbv 对象调 是方法 类来调是函数 function

uwsgi 开的多线程 和python 无关 也就和 GIL无关

管道 共享变量 queue 锁 线程之间共享资源

线程id号 {id号:{值}} 所以线程安全 threading.local 全局request不会乱

object __setattr__ local 内部保证数据不乱 只支持线程 不支持携程

携程 去去id号就是线程的

获取协程id号 线程的id号

request localstack local setattr getattr

try except storage[id号][v]=[k] setattr

getattr 根据id号去获取值

flask 请求生命周期

app.__call__() self.wsgi_app() ctx对象

0 人点赞