簡體   English   中英

在燒瓶中緩存功能

[英]Caching a function in flask

我的這段代碼在我的機器上本地執行大約9.2秒。 將其部署到AWS ec2盒后,執行時間最多可提高20秒。

由於之前沒有實現任何緩存,所以我想知道是否可以緩存特定功能的響應,或者我需要緩存從外部獲取的每個POST。

本質上,我要問的是如何緩存POST的結果,因此每當我再次運行它時,都使用相同的參數使用緩存來加快響應速度。

#!flask/bin/python
from flask import Flask, jsonify
from flask import request
import json
import nltk, string
import operator
from sklearn.feature_extraction.text import TfidfVectorizer
import re
from flask import make_response
import time
import access_json

app = Flask(__name__)

def output(word_list):
    start = time.time()
    #RUNNING ALGORITHM *****************
    comparison_words = get_synonyms(word_list) + word_list
    print(comparison_words)
    dict_sim = {}
    for i in json_list:
        dict_sim[i['jobId']] = cosine_sim(str(comparison_words), i['jobDescription'])
    sorted_sim = sorted(dict_sim.items(), key=operator.itemgetter(1), reverse = True)
    toplist = sorted_sim[:10]
    sort_toplist = list(map(operator.itemgetter(0), toplist))
    filter_toplist = (list(filter(lambda job: job['jobId'] in sort_toplist, json_list)))
    #print('Our top ten suggestion from SkillzMiner are those:\n')
    end = time.time()
    print (end-start)
    # for j in filter_toplist:
    #       print ('JobTitle: ' + j['jobTitle'] +
    #             '\nEmployer Name: ' + j['employerName'] +
    #             '\nLocation: ' + j['locationName'] +
    #             '\nReed Job URL ' + j['jobUrl'] +
    #             '\nJob Description: ' + cleanhtml(j["jobDescription"]))
    return filter_toplist

@app.route('/postjson', methods=['POST'])
def json_handler():
     content = request.get_json(force=True)
     word_list = access_json.read_parsed_JSON(content)
     return jsonify ({'jobs': output(word_list)})

   if __name__ == '__main__':
    app.run(debug=True)
    app.run(host='0.0.0.0', port=80)

PS我省略了一些不相關的功能,這不是完整的代碼。 抱歉,我是這個Web服務的新手。

緩存是否需要是本地的和特定於用戶的?

您是否嘗試過在會話變量(例如session ['my_variable'] = my_response)中進行緩存

只要用戶本地會話(例如,以隱身模式訪問),它們就應該有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM