Zyb*_*ber 4 flask flask-migrate flask-script flask-socketio
我正在使用应用程序工厂方法创建一个烧瓶应用程序,但在使用带有socketio和flask-script的Flask-Migrate时出现问题.
问题是我将我的create_app功能传递给了Manager我,但我也需要传递app给我socketio.run().而现在我似乎无法找到解决方案.有什么方法可以将这两种解决方案结合起来吗?
manage.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)
Run Code Online (Sandbox Code Playgroud)
当我使用旧的方法与socketio,但没有烧瓶 - 迁移一切工作.如果我使用新方法,并删除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)
)
Run Code Online (Sandbox Code Playgroud)
根据米格尔的评论,我发现了一种有效的方法.
由于某种原因,以下代码不起作用
manager.add_command("run", socketio.run(
flask.current_app,
host='127.0.0.1',
port=5000,
use_reloader=False)
)
Run Code Online (Sandbox Code Playgroud)
但这确实有效.
@manager.command
def run():
socketio.run(flask.current_app,
host='127.0.0.1',
port=5000,
use_reloader=False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |