我正在尝试使用一些其他参数来运行我的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
抓取了示例我在做什么错?谢谢。
答案 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,
)