我正在尝试使用新线程从项目启动flask-app。因此,我希望能够从路由的函数中访问此类对象的所有属性。
我的最小例子如下:
from flask import Flask
from threading import Thread
class WebApp():
def __init__(self, ip, port):
self.ip = ip
self.port = port
self.app = Flask(__name__)
self.some_attribute = 'test'
def some_function(self):
print('hello there')
def run(self):
@self.app.route('/test/', Methods=['POST'])
def test(self):
#do something with the data recieved in the post request
print request.json()
#run some method
self.some_function()
return self.some_attribute
t = Thread(target=self.app.run, args=(self.ip,self.port,False))
t.start()
if __name__ == '__main__':
webapp = WebApp('localhost', 8000)
webapp.run()
这个例子的问题是,在函数测试中不知道“self”。
我已经考虑过使用Flasks flask.views.MethodView或flask.view.View,但似乎我必须为每个路由定义一个全新的类。
我有可能这样做吗?
更新:通过从test()签名中删除“self”,可以访问“self”。但是,从POST请求访问数据仍然是一个问题。
答案 0 :(得分:0)
嘿,我知道有点晚了,但是,在查看您的导入时,您忘记了导入请求:
from flask import request