我有一个flask应用程序,该应用程序使用pandas
读取csv文件,并在读取后返回一些数据。 dataframe
没有任何操作。我以dataframe
格式存储了pickle
,因此对于收到的每个请求,应用程序unpickles
都会读取文件并读取数据并将其返回给客户端。
from flask import Flask, request, jsonify, abort
from flask_cors import CORS, cross_origin
import pandas as pd
import os
import json
@application.route('/Getdata', methods=['GET'])
@cross_origin()
@Validate_API_Key
def index():
fid = request.args.get('Fid', default=0, type=int)
df = pd.read_pickle(os.getenv('DFFileName'), compression='gzip')
res = get_fid_data(fid, df)
data = res.to_dict(orient='records')
return jsonify(data=data)
设置get_fid_data()
的方式
def get_fid_data(fid, df):
frecord = pd.DataFrame()
# certain rows are selected from df based on fid and the
# rows are appended to frecord. The frecord is then returned.
return frecord
我的问题是,在最初阅读df
之后,有没有办法使它成为全局的?好像unpickling
的每个请求的df都是不必要的,只要它可以在flask应用程序运行期间将其“持久”存储在内存中。我想要这样,以便对于每个传入的请求,我都可以从内存中读取df
而不是读取文件。
有没有办法做到这一点?