Запуск кода при запуске Flask перед запросамиPython

Программы на Python
Anonymous
Запуск кода при запуске Flask перед запросами

Сообщение Anonymous »

Я пытаюсь запустить некоторый код при запуске Flask, который использует базу данных (Flask-SQLAlchemy), но до того, как будут приняты какие-либо запросы. Я прочитал, что @app.before_first_request устарел, так какая же замена.
Если я не использую базу данных, она работает. Но при использовании базы данных я получаю RuntimeError: Работа вне контекста приложения.. Я предполагаю, что это потому, что приложение еще не полностью инициализировано.
Я пробовал следующее:
app.py

Код: Выделить всё

def create_app():
nwm_app = Flask(__name__)
nwm_app.config |= {
"SQLALCHEMY_ENGINES": {
"default": "postgresql://postgres:postgres@localhost:5432/flask_test"
},
}
nwm_app.config.from_prefixed_env()
db.init_app(nwm_app)
alembic.init_app(nwm_app)

on_start()

# Register blueprints or views here
nwm_app.register_blueprint(calibration)

return nwm_app
on_start.py

Код: Выделить всё

def on_start():
with current_app.app_context():
with (db.session as session, session.begin()):
query = select(table)
result = session.execute(query)
print('results', result)
Причина, по которой мне это нужно, — выполнить некоторую очистку базы данных, если сервер ранее завершил работу ненормально

Подробнее здесь: https://stackoverflow.com/questions/786 ... e-requests

Вернуться в «Python»