Как кэшировать результаты функции колбы - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу кэшировать результаты функции колбы, которая вызывается событием на моем веб-сайте:

Это функция для колбы:

@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 голосов
/ 11 апреля 2019

Примерно так:

@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, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...