5

アプリケーション ファクトリ アプローチを使用してフラスコ アプリケーションを作成していますが、Flask-Migrate を socketio とフラスコ スクリプトで使用すると問題が発生します。

問題は、自分のcreate_app関数をに渡していることですが、自分にもManager渡す必要があります。そして今のところ、解決策が見えないようです。これら 2 つのソリューションを組み合わせる方法はありますか?appsocketio.run()

管理.py:

#app = create_app(False)  <--- Old approach
#manager = flask_script.Manager(app) 

manager = flask_script.Manager(create_app)
manager.add_option("-t", "--testing", dest="testing", required=False)

manager.add_command("run", socketio.run(
    app,
    host='127.0.0.1',
    port=5000,
    use_reloader=False)
)

# DB Management
manager.add_command("db", flask_migrate.MigrateCommand)

私が socketio で古いアプローチを使用したとき、flask-migrate なしではすべてが機能しました。新しいアプローチを使用して socketio 部分を削除すると、移行が機能します。

注: 次のコマンドの両方でアプリを呼び出せるようにしたいと考えています。 python manage.py run python manage.py -t True db upgrade

編集:

使用しようとしていcurrent_appますRuntimeError: working outside of application context

manager.add_command("run", socketio.run(
   flask.current_app,
   host='127.0.0.1',
   port=5000,
   use_reloader=False)
)
4

1 に答える 1