将数据传递到全局变量FLASK并使用它

问题描述 投票:0回答:1

我请求通过CURL将数据传输到POST方法,在该方法中,我将全局变量数据设置为value,然后我需要在另一种方法中使用相同的变量,但是在请求之后数据消失了。

如何写入数据以使其在请求后不会消失?

POST请求:

curl --request POST --header 'Content-Type: application/json' --data '{"K":10,"Sums":[1.01,2.02],"Muls":[1,4]}' 'http://127.0.0.1:5000/PostInputData'

获取请求:

curl http://127.0.0.1:5000/GetAnswer

程序代码:

from flask import Flask, jsonify, request, json, abort
import requests, json

app = Flask(__name__)

data = ''


def calculate(jsn):
    jsn_out = {
        'SumResult': 0,
        'MulResult': 1,
        'SortedInputs': []
    }
    k = jsn['K']
    sum = 0
    for el in jsn['Sums']:
        sum += el
        jsn_out['SortedInputs'].append(el)

    jsn_out['SumResult'] = round(sum * k, 2)

    for el in jsn['Muls']:
        jsn_out['MulResult'] *= el
        jsn_out['SortedInputs'].append(el)

    jsn_out['SortedInputs'].sort()
    return jsn_out


@app.route('/')
def index():
    return ''


@app.route('/Ping')
def ping():
    res = requests.get('http://127.0.0.1:5000/')
    if res.status_code == 200:
        return jsonify(res.status_code)
    else:
        return abort(400)


@app.route('/PostInputData', methods=['POST'])
def post_input_data():
    data = request.get_json(force=True)
    print(data)
    # data is empty
    return jsonify(data)


@app.route('/GetAnswer')
def get_answer():
    print(data)
    return jsonify(data)


if __name__ == '__main__':
    app.run(debug=True)
python curl flask
1个回答
0
投票

如果您有兴趣,请输入more info about the Flask request lifecycle。没错,一旦Flask处理完请求,数据就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.