我想保存一個對象,這是一個昂貴函數的結果。 昂貴的功能只能在任何請求前處理一次。在Flask中爲應用程序分配一個變量`g`一次並且僅一次
我檢查了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 /測試」第二次,g.rec
不存在,這將拋出一個異常
有沒有人有關於如何INITING應用程序時的全局變量分配到g
想法?
謝謝,sberry。我可以在該應用程序中使用全局不可變對象嗎?爲什麼我應該使用'catching'而不是全局對象? –
同意 - ['Flask-Cache'](http://packages.python.org/Flask-Cache/)非常強大,你可以緩存到內存/文件/ redis並設置超時等。 –
看看[緩存其他函數](http://packages.python.org/Flask-Cache/#caching-other-functions)示例 –