using flask-migrate with flask-script, flask-socketio and ap



我正在使用应用程序工厂方法创建一个flask应用程序,但是在使用flask- migrate与socketio和flask-script时遇到了一个问题。

问题是我将create_app函数传递给Manager,但我也需要将app传递给socketio.run()。现在我似乎找不到解决办法。有没有办法把这两个解结合起来?

jobs:

#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)

当我使用socket的旧方法,但没有flask- migration时,一切都工作了。如果我使用新的方法,并删除套接字部分,迁移工作。

注意:我希望能够调用我的应用程序与以下两个命令。python manage.py runpython 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)

最新更新