重新运行 Flask 应用程序时全局变量未定义

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

重新运行 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

但是当我停止并重新启动应用程序并到达终点时,它就可以工作了。不知道为什么会发生这种情况。

python flask
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.