Flask Server的面向对象的Python? [英] Object Oriented Python with Flask Server?
问题描述
我正在使用Flask将一些数据处理代码公开为Web服务. 我想有一些Flask函数可以访问的类变量.
I'm using Flask to expose some data-crunching code as a web service. I'd like to have some class variables that my Flask functions can access.
让我带您了解被困的地方
Let me walk you through where I'm stuck:
from flask import Flask
app = Flask(__name__)
class MyServer:
def __init__(self):
globalData = json.load(filename)
@app.route('/getSomeData')
def getSomeData():
return random.choice(globalData) #select some random data to return
if __name__ == "__main__":
app.run(host='0.0.0.0')
当我在Flask之外运行getSomeData()
时,它工作正常.但是,当我用Flask运行它时,得到500 internal server error
.这里没有魔术,并且Flask不知道应该初始化MyServer
对象.如何将MyServer的实例提供给app.run()
命令?
When I run getSomeData()
outside of Flask, it works fine. But, when I run this with Flask, I get 500 internal server error
. There's no magic here, and Flask has no idea that it's supposed to initialize a MyServer
object. How can I feed an instance of MyServer to the app.run()
command?
我可以认输,然后将globalData
放入数据库中.但是,还有其他方法吗?
I could admit defeat and put globalData
into a database instead. But, is there an other way?
推荐答案
您可以在端点范围之外创建MyServer
的实例,并访问其属性.这对我有用:
You can create an instance of MyServer
just outside the scope of your endpoints and access its attributes. This worked for me:
class MyServer:
def __init__(self):
self.globalData = "hello"
from flask import Flask
app = Flask(__name__)
my_server = MyServer()
@app.route("/getSomeData")
def getSomeData():
return my_server.globalData
if __name__ == "__main__":
app.run(host="0.0.0.0")
这篇关于Flask Server的面向对象的Python?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!