Flask全局python obj

2024-04-23 06:23:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个简单的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方法,无需再次实例化对象,因为它加载的数据是静态的

如何在烧瓶中实现这一点


Tags: theto代码textin文本selfjson
1条回答
网友
1楼 · 发布于 2024-04-23 06:23:34

由官方api

class flask.Blueprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None)

Blueprint的构造函数不能为共享对象接受任何参数(大多数参数需要是String

因此,您可以创建一个新的MyBlueprint类来扩展Blueprint并可以存储共享对象

我的建议是将TextParser重构为singleton,这样就不会创建它并在实例化时加载数据

相关问题 更多 >