Flask Server的面向对象的Python? [英] Object Oriented Python with Flask Server?

查看:179
本文介绍了Flask Server的面向对象的Python?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆