我正在制作一个简单的FlaskRESTAPI,它处理一些文本并返回一些json
处理文本的所有代码都在一个类中:
class TextParser:
def __init__(self, file_in, ....):
# COSTLY FUNCTION THAT LOADS DATA FROM MULTIPLE SOURCES
def parse_text(self, text):
# fast function that returns the wanted json
API也包含在python包中,因此它从python代码开始,如下所示:
def start_api(path_to_load="file_one.in", ...):
app = Flask(__name__, static_folder="static")
app.config["JSON_AS_ASCII"] = False
# I load the parser here as it takes a while to load
text_parser = TextParser()
# I also register some blueprints
app.register_blueprint(...)
app.run(host="localhost", port=5000)
我把我的一些代码按原样删减了。我想要的是加载TextParser
一次,然后能够在蓝图内部调用parse_text
方法,无需再次实例化对象,因为它加载的数据是静态的
如何在烧瓶中实现这一点
由官方api
Blueprint
的构造函数不能为共享对象接受任何参数(大多数参数需要是String
)因此,您可以创建一个新的
MyBlueprint
类来扩展Blueprint
并可以存储共享对象我的建议是将
TextParser
重构为singleton,这样就不会创建它并在实例化时加载数据相关问题 更多 >
编程相关推荐