【问题标题】:How to run Flask app with custom parameters?如何使用自定义参数运行 Flask 应用程序?
【发布时间】:2018-09-09 05:03:49
【问题描述】:

我正在尝试使用一些附加参数来运行我的 Flask 应用程序。我使用点击并面临以下问题。如果我不使用任何参数而只使用常规的烧瓶运行命令,则应用程序正在运行但忽略我的附加参数。

python -m flask run

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

python -m flask dbinit -u

相反,它只是通过并显示以下消息:“ D:..\main.py:18: 警告:静默忽略 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

我做错了什么?谢谢。

【问题讨论】:

  • 使用set FLASK_APP=yourapp.py,然后尝试在没有python的情况下使用flask runflask dbinit
  • @DarkSuniuM,我已经设置了 FLASK_APP。我尝试在没有python的情况下使用flusk命令,结果是一样的:当我使用flask run时,它会运行但忽略标志,如果我使用flask dbinit,它会进入命令但不运行应用程序。

标签: flask


【解决方案1】:

你可以试试 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,
)

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2015-08-14
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2018-02-02
    相关资源
    最近更新 更多