如何缓存烧瓶功能结果

时间:2019-04-11 10:55:03

标签: python caching flask

我想缓存我的网站上的某个事件调用的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')的功能。

1 个答案:

答案 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内。