在编写烧瓶服务器时,我发现自己处于类似以下情况:
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
在这里,我尝试通过客户端的GET请求调用两种方法。因此,当单个客户端向“ / method_b”发出2个请求时,输出应为4,依此类推。现在我的问题是,当服务器将在真实网络中运行时,多个客户端将尝试调用其方法。因此,如果第一个客户端调用一次“ / method_a”,则他获得输出1,而其他客户端也将调用这些方法,从而更改x的值。因此,当第一个客户端在'/ method_a'上发出第二个请求时,它将不会获得输出为2。
但是我想制造一个服务器,将不同客户端的变量值视为不同,并仅向他们显示变量值的版本。我正在使用全局变量,因为这两种方法都需要此变量才能起作用,并且由于它们是由GET请求调用的,因此我无法通过客户端传递变量的值。如何解决这个问题?有没有更好的方法来编写此代码来解决上述问题?
答案 0 :(得分:0)
如果我正确理解,则可以使用Cookie来实现。作为响应,将视图函数的代码更改为set the cookie:
var saveRequested = false;
function render() {
renderer.render(scene, camera);
// FIX: scene is rendered, ready to save it
if (saveRequested) {
saveAsImage2();
saveRequested = false;
}
}
function saveAsImage() {
// say, need to take a snapshot after next frame is rendered
saveRequested = true;
}
function saveAsImage2() {
var imgData, imgNode;
try {
var strMime = "image/jpeg";
var strDownloadMime = "image/octet-stream";
let imgData = renderer.domElement.toDataURL(strMime);
console.log(imgData);
saveFile(imgData.replace(strMime, strDownloadMime), "test.jpg");
} catch (e) {
console.log(e);
return;
}
}