Использование Joblib в Flask дает мне ошибку: RuntimeError: Приложение не найдено. Либо работайте внутри функции представления, либо pu sh в контексте приложения. - PullRequest
0 голосов
/ 10 февраля 2020

Мое flask приложение работало очень хорошо до введения joblib, но одна из моих конечных точек основана на распараллеливании, и именно тогда я начинаю сталкиваться с проблемами. Функция, которую я распараллеливаю, использует подпроцесс для вызова скрипта python, а также обновляет запись в postgresql db. Я думаю, что это та часть, которая вызывает ошибку. Я изучал SO-решения, которые разрешают сообщения об ошибках того же типа, но они, похоже, не работают для меня.

Ошибка исключения:

RuntimeError: No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/.

Вот как я настраиваю свое приложение flask:

manage.py

app = create_app('prod')
app.register_blueprint(blueprint)
app.app_context().push()

manager = Manager(app)

migrate = Migrate(app, db)

manager.add_command('db', MigrateCommand)

init .py

db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config_by_name[config_name])
    db.init_app(app)
    # Migrate(db)
    return app

job_service.py

def update_run(mlflow_run_id, status):
    existing_run = Job.query.filter(Job.mlflow_run_id == mlflow_run_id).order_by('batch_load_datetime').first()

    if existing_run:
        existing_run.batch_load_datetime = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
        existing_run.status = status
        db.session.commit()
...