Я разрабатываю приложение с моделью машинного обучения для прогнозирования цены автомобиля с учетом заданного c набора функций.
В этом руководстве автор заявляет, что:
Любая часть нашего приложения, которая не импортирована, не инициализирована и не зарегистрирована в файле app.app_context ( ): блок фактически не существует.
И импортирует маршруты в app_context ():
def create_app():
...
with app.app_context():
# Include our Routes
from . import routes
В моем файле init.py мне нужно импортировать и инициализировать MLModelConfigs
внутри app_context, потому что в противном случае он вызывает RuntimeError: Working outside of application context.
Однако я могу импортировать routes
за пределами app_context
, и он все еще работает.
Почему существует другое поведение?
Мой случай:
У меня следующая структура:
├── webapp
├── car_prices.py
├── congif.py #paths
│ ├── app
│ ├── static
│ ├── templates
│ ├── routes.py
│ ├── utils.py
│ ├── models.py
│ ├── __init__.py
'car_prices.py':
from app import app
' init .py'
from flask import Flask
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
with app.app_context():
from app.models import MLModelConfigs
model_config = MLModelConfigs
from app import routes
'models.py'
from .utils import process_features, load_freshest_model
from flask import current_app
class MLModelConfigs:
__tablename__ = 'MLmodelConfigs'
model = load_freshest_model(current_app.config['PATH_MODELS'])
features_info, option_values = process_features(current_app.config['PATH_FEATURES_INFO'])
Вопросы:
1. Почему работает импорт маршрутов вне app_context ()?
2. Почему импорт и инициализация MLModelConfigs
вне app_context вызывает RuntimeError: Working outside of application context.
´