アプリケーション ファクトリ アプローチを使用してフラスコ アプリケーションを作成していますが、Flask-Migrate を socketio とフラスコ スクリプトで使用すると問題が発生します。
問題は、自分のcreate_app
関数をに渡していることですが、自分にもManager
渡す必要があります。そして今のところ、解決策が見えないようです。これら 2 つのソリューションを組み合わせる方法はありますか?app
socketio.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)
)