我想保存一个昂贵函数的结果对象。在任何请求之前,这个昂贵的函数应该只被处理一次。
我查看了Flask的文档,并考虑使用g
来保存结果,并使用@app.before_first_request
装饰器来确保这个赋值只发生一次。
我的代码如下:
@app.before_first_request
def before_first_request():
g.rec = take_long_time_to_do()
@app.route('/test/')
def test():
return render_template('index.html',var_rec=g.rec)
然而,这些代码不够完善。它只在第一次调用“test”请求时起作用。当我第二次访问“myapplication/test”时,
g.rec
不存在,这将引发异常。有没有人有关于如何在应用程序初始化时将全局变量赋值给
g
的想法?
catching
而不是全局对象? - Hanfei SunFlask-Cache
非常强大,你可以缓存到内存/文件/redis并设置超时等。 - Alex Lapp = Flask(__name__)
之后分配一个全局对象,例如rec=100
,然后我可以在任何查看器函数中使用这个变量rec
。不是吗? - Hanfei Sun