SyntaxError:Name';s';在Python/Flask代码中,在全局声明之前使用
我的代码的目标是将其放在两个EC2实例中,然后连接到负载平衡器,以便在两个实例之间分发请求 这是我的代码,我首先尝试在本地进行测试,然后在EC2实例中进行测试,最后使用负载平衡器测试所有内容SyntaxError:Name';s';在Python/Flask代码中,在全局声明之前使用,python,python-3.x,amazon-web-services,flask,amazon-ec2,Python,Python 3.x,Amazon Web Services,Flask,Amazon Ec2,我的代码的目标是将其放在两个EC2实例中,然后连接到负载平衡器,以便在两个实例之间分发请求 这是我的代码,我首先尝试在本地进行测试,然后在EC2实例中进行测试,最后使用负载平衡器测试所有内容 from flask import Flask,request,session ##global s s = 0 app = Flask(__name__) @app.route("/", methods=["GET","POST"]) def disp(): if request.method
from flask import Flask,request,session
##global s
s = 0
app = Flask(__name__)
@app.route("/", methods=["GET","POST"])
def disp():
if request.method == "GET":
global s
s = 0
return str(s)
if request.method == "POST":
global s
s = request.json["num"]
return str(s)
if __name__ =="__main__":
app.run()
##app.run('0.0.0.0', port=80)
在本地运行时返回的错误是SyntaxError:名称“s”在全局声明之前使用。我尝试在导入行之后删除s=0,但错误仍然存在。您的
disp
函数中有两个global s
,第二个表示有问题,因为它之前看到了s=0
理想情况下,在声明函数后放置global
定义:
from flask import Flask,request,session
s = 0
app = Flask(__name__)
@app.route("/", methods=["GET","POST"])
def disp():
global s
if request.method == "GET":
s = 0
return str(s)
elif request.method == "POST":
s = request.json["num"]
return str(s)
if __name__ =="__main__":
app.run()
##app.run('0.0.0.0', port=80)
还将第二个if更改为elif。在
disp
函数中有两个global s
,第二个表示有问题,因为它以前看到s=0
理想情况下,在声明函数后放置global
定义:
from flask import Flask,request,session
s = 0
app = Flask(__name__)
@app.route("/", methods=["GET","POST"])
def disp():
global s
if request.method == "GET":
s = 0
return str(s)
elif request.method == "POST":
s = request.json["num"]
return str(s)
if __name__ =="__main__":
app.run()
##app.run('0.0.0.0', port=80)
第二个if也改为elif。是否应该从第2行开始将s设为全局变量?@JakobF global scope已经表示变量是全局变量。您引用的注释行根本不需要
global s
表示您希望覆盖全局变量的内容。我不确定您在这里试图实现什么,但可能值得注意的是,s
只是每个进程的全局变量。通常,您运行的应用程序每台服务器有多个进程,因此即使只有一个EC2实例,您也会收到不同/不可预测的s
值。您不应该在第2行中从一开始就将s设为全局变量吗?@JakobF global scope已经表示该变量是全局变量。您引用的注释行根本不需要global s
表示您希望覆盖全局变量的内容。我不确定您在这里试图实现什么,但可能值得注意的是,s
只是每个进程的全局变量。通常,您运行的应用程序每台服务器有多个进程,因此即使只有一个EC2实例,您也会收到不同的/不可预测的s
值。