如何使用自定义参数运行Flask应用?

时间:2018-09-09 05:03:50

标签: flask

我正在尝试使用一些其他参数来运行我的Flask应用程序。我使用click并面临以下问题。如果我不使用任何参数而仅使用常规的flask run命令,则该应用程序正在运行,但会忽略我的其他参数。

python -m flask run

如果我运行自定义命令,则应用将执行命令代码,但不会运行应用本身:

python -m flask dbinit -u

相反,它只是通过并显示以下消息: D:.. \ main.py:18:警告:由于应用程序是从flask命令行可执行文件运行的,因此请忽略app.run()。考虑将app.run()放在if ____name____ ==“ ____main____”卫队的后面,以使此警告静音。”

代码:

import click
from flask.cli import with_appcontext
from app import create_app, init_database

app = create_app()


@app.cli.command()
@with_appcontext
@click.option('-u', 'dbopt', flag_value='upgrade',
              default='')
@click.option('-c', 'dbopt', flag_value='create',
              default='')
def dbinit(dbopt):
    print('init db', dbopt)
    init_database(dbopt)
    app.run(debug=False) # not working

我有env var FLASK_APP ='myapp'。

代码在Win7上运行。我从这里http://flask.pocoo.org/docs/1.0/cli/#custom-commands

抓取了示例

我在做什么错?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试来自werkzeug的run_simple,这是我记得的烧瓶cli所使用的。它是这样的:

from werkzeug.serving import run_simple
return run_simple(
    hostname=host,
    port=port,
    application=app,
    use_reloader=reload,
    use_debugger=debug,
)