一尘不染

Flask Server的面向对象的Python?

flask

我正在使用Flask将一些数据处理代码公开为Web服务。我想要一些Flask函数可以访问的类变量。

让我向你介绍我遇到的问题:

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')

当我getSomeData()Flask外面跑步时,它可以正常工作。但是,当我与Flask一起运行时,我得到了500 internal server error。这里没有魔术,而且Flask不知道应该初始化一个MyServer对象。如何将MyServer的实例提供给app.run()命令?

我可以认输,然后globalData放入数据库。但是,还有其他方法吗?


阅读 598

收藏
2020-04-07

共1个答案

一尘不染

你可以MyServer在端点范围之外创建一个实例,并访问其属性。这为我工作:

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")
2020-04-07