Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何去除flask服务器代码中的全局变量?_Python_Flask_Global Variables - Fatal编程技术网

Python 如何去除flask服务器代码中的全局变量?

Python 如何去除flask服务器代码中的全局变量?,python,flask,global-variables,Python,Flask,Global Variables,在编写flask服务器时,我发现自己的处境与此类似: from flask import Flask, jsonify app = Flask(__name__) x = 0 @app.route('/method_a', methods=['GET']) def method_a(): global x x = x + 1 return jsonify({'mesaage': 'value of x incremented by 1 is: '+str(x)}),

在编写flask服务器时,我发现自己的处境与此类似:

from flask import Flask, jsonify

app = Flask(__name__)
x = 0

@app.route('/method_a', methods=['GET'])
def method_a():
    global x
    x = x + 1
    return jsonify({'mesaage': 'value of x incremented by 1 is: '+str(x)}), 200

@app.route('/method_b', methods=['GET'])
def method_b():
    global x
    x = x + 2
    return jsonify({'message': 'value of x increased by 2 is: '+str(x)}), 200
这里,我有两个方法,我正试图通过从客户机获取请求来调用它们。因此,当一个客户端向“/method_b”发出2个请求时,输出应该是4,依此类推。现在我的问题是,当服务器在真实的web中运行时,多个客户端将尝试调用其方法。因此,如果第一个客户机调用'/method_a'一次,他将得到输出1,同时其他客户机也将调用这些方法,从而更改x的值。因此,当第一个客户端在“/method_a”上发出第二个请求时,它将不会得到2的输出。

但是我想制作一个服务器,它将变量值视为不同的客户端,并且只显示变量值的版本。我之所以使用全局变量,是因为这两个方法都需要这个变量才能运行,而且由于它们是由GET请求调用的,所以我无法通过客户端传递变量的值。如何处理这个问题?有没有更好的方法来编写此代码来解决上述问题?

如果我理解正确,您可以使用cookies来实现这一点。将视图函数的代码更改为作为响应:

@app.route('/method_a', methods=['GET'])
def method_a():
    x = request.cookies.get('xcookie', 0)
    x = x + 1
    response = jsonify({'mesaage': 'value of x incremented by 1 is: '+str(x)})
    response.set_cookie('xcookie', x)
    return response

您可以让客户机使用get请求返回其当前的
x
值。例如
/方法a?电流=2
。这样,您就不需要在服务器端存储状态。