调用“ / setvalue ”路由后,我将在全局变量中设置一些数据。
那么任何想要检索此数据的人(甚至从Web应用程序外部,浏览器中)都可以访问它。
问题是检索数据的请求来自外部,例如从任何浏览器访问URL的客户端都可以获取此数据
我尝试如下使用“ g ”,但无法正常工作:
from flask import g
@app.route("/setvalue", methods = ['POST'])
def setvalue():
content = request.get_json()
g.content = content
return format(content) #"set"
@app.route("/getvalue" )
def getvalue():
return g.content
from flask import Flask, jsonify, request
from flask import g
如上面的代码所示,我将调用“ / setvalue ”来启动Web应用。
调用“ / getvalue ”的人将获得启动的值。
但是g.content似乎不能这样工作。我收到500错误。
我的代码缺少什么?提前致谢。非常感谢您的帮助
答案 0 :(得分:1)
我不确定这是否是处理此问题的最佳方法,但可以快速解决。
您可以先尝试将变量设置为默认值,然后使用global关键字在函数内部访问它。
content = "Some default value"
def setvalue():
global content
content = request.get_json()
def getvalue():
global content
return content
重要说明:这不是线程安全的。您应该使用内存数据库或一些锁。
编辑:基于此link,我认为这实际上在python中可能是线程安全的。尽管如果您正在使用流程,则仍然需要数据库。