gpt4 book ai didi

flask - 使用flask-migrate 和flask-script、flask-socketio 和应用程序工厂

转载 作者:行者123 更新时间:2023-12-03 15:49:41 25 4
gpt4 key购买 nike

我正在使用应用程序工厂方法创建一个 flask 应用程序,但是在使用带有 socketio 和 flask 脚本的 Flask-Migrate 时遇到问题。

问题是我正在传递我的 create_app函数到 Manager但我需要通过 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 迁移时,一切正常。如果我使用新方法并删除 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)
)

最佳答案

根据 Miguel 的评论,我找到了一种有效的方法。

由于某种原因,以下代码不起作用

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

但这确实有效。
@manager.command
def run():
socketio.run(flask.current_app,
host='127.0.0.1',
port=5000,
use_reloader=False)

关于flask - 使用flask-migrate 和flask-script、flask-socketio 和应用程序工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30454704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com