在没有获取到应用上下文current_app的情况下,进行了current_app上下文操作,会报错working outside application contex。
current_app类型是LocalProxy,像全局变量一样工作,但只能在处理请求期间且在处理它的线程中访问。
有两种方式来创建应用上下文。第一种当一个请求上下文被压栈时, 一个应用上下文会被一起创建。第二种是显式地调用 app_context() 方法:
from flask import Flask, current_app app = Flask(__name__)
with app.app_context():
print current_app.name
应用上下文会在必要时被创建和销毁。它不会在线程间移动,并且也不会在不同的请求之间共享。
上下文的一个典型应用场景就是用来缓存一些我们需要在发生请求之前或者要使用的资源。举个例子,比如数据库连接。当我们在应用上下文中来存储东西的时候你得选择一个唯一的名字,这是因为应用上下文为 Flask 应用和扩展所共享。
最常见的应用就是把资源的管理分成如下两个部分:
- 一个缓存在上下文中的隐式资源
- 当上下文被销毁时重新分配基础资源
|
|