Flask глобальный объект python - PullRequest
0 голосов
/ 16 октября 2019

Я делаю простой REST API Flask, который обрабатывает некоторый текст и возвращает 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, не нужно снова создавать экземпляр объекта, поскольку данные, которые он загружает, являются статическими.

Как мне добиться этого в колбе?

1 Ответ

0 голосов
/ 16 октября 2019

по официальным api

класса flask.Blueprint (имя, import_name, static_folder = Нет, static_url_path = Нет, template_folder = Нет, url_prefix = Нет, поддомен = Нет, url_defaults = None, root_path = None)

конструктор Blueprint не может принимать ни одного аргумента для общего объекта (большинство аргументов должно быть String)

так что вы можете создать новый класс MyBlueprint, который расширяет Blueprint и может хранить общий объект

. Я предлагаю реорганизовать TextParser как singleton , чтобы он выиграл 'создать и загрузить данные в момент их создания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...