我想缓存我的网站上的某个事件调用的flask函数的结果:
这是烧瓶上的功能:
@app.route('/request_hourly_prediction')
def request_hourly_prediction():
number = request.args.get('s_num')
# do some stuff...
# return jsonify(results)
这是网站的称呼方式:
function func3(x) {
$.getJSON(ROOT + '/request_hourly_prediction?s_num=' + x, null, function(data1) {
// do stuff...
}
如您所见,我使用request.args.get('s_num')
将参数传递给函数,我想根据传递的参数来缓存函数的结果:我尝试使用@lru_cache(maxsize=32)
,但是它缓存了函数结果,无论给出的参数为何。
我还看到了一些装饰器函数,它们根据传递给python函数的参数保存结果,但是这种情况下的问题是我实际上没有在函数调用中传递任何参数,而是从内部获取它们使用request.args.get('s_num')
的功能。
答案 0 :(得分:0)
类似这样的东西:
@app.route('/request_hourly_prediction')
def request_hourly_prediction():
number = request.args.get('s_num')
return jsonify(compute(number))
@lru_cache(maxsize=32)
def compute(number):
# do computation
return results
如果需要,您也可以将jsonify
放在compute
内。