重新运行 Flask 应用程序时全局变量未定义, 我有3个文件,
api.py
import trainer
app = Flask(__name__)
@app.route('/start', methods=['POST'])
def apifunc(id):
result = trainer.consume(id)
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True, port=LISTEN_PORT, threaded=True, use_reloader=False)
培训师.py
from utilities import function1
def consume(id)
value = function1(agg1)
... some codes...
return value
实用程序.py
aggregate = 30
def function1(agg1):
global aggregate
... some codes...
print(aggregate)
当我们第一次运行应用程序并到达终点“/start”时,它会选择全局变量“aggregate”值,它起作用了,
但是 第二次点击时,它会抛出错误,
ERROR:api:500 Internal Server Error: name 'aggregate' is not defined
但是当我停止并重新启动应用程序并到达终点时,它就可以工作了。不知道为什么会发生这种情况。
global变量对于定义它们的模块来说是全局的,而不是global应用程序上下文。
从提供的例子来看,全局变量似乎不需要定义为全局的。另外,如果你需要它真正全球化, 您可以将变量放入某个模块中并在需要时导入它,或者使用您可以使用flask的g全局命名空间,如下所示
from flask import g
...
setattr(g, VAR, VAL)
# then in some other function / module etc
from flask import g
val = getattr(g, VAL)
# or
val = g.VAL