from flask import request
@app.route('/')
def index():
user_agent = request.headers.get('User-Agent')
return '<p>Your browser is %s</p>' % user_agent
注意在此视图中如何使用函数
request
,就好像它是全局的一样 变量。实际上,request
如果你不能成为全局变量 考虑在线程正在处理的多线程服务器中 来自不同客户的不同请求同时如此 线程需要在请求中看到不同的对象。上下文启用 Flask使线程可以全局访问某些变量 不干扰其他线程。
可以理解,但为什么不简单地request
成为thread-local variable?究竟什么是request
,它与线程局部变量有何不同?
答案 0 :(得分:1)
这只是Armin(Flask的作者)的设计决定。你确实可以重写Flask作为线程本地操作,但这不是他想要做的。
Flask(一般来说)的想法是让事情尽可能简单,并抽象出很多想法。这就是为什么许多Flask助手被实现为全局变量的原因:你不必考虑它背后的含义,因为每个全局都被绑定到传入的请求。