【发布时间】:2019-03-30 21:24:31
【问题描述】:
我在 Flask 中有一个简单的 CLI,用于创建虚拟数据。它在我的本地机器上运行良好,但在 Heroku 上却不行。这是一个终端会话:
(venv) $ flask create-dummy-data
(venv) $ git push staging master
Everything up-to-date
(venv) $ heroku run bash --remote staging
Running bash on ⬢ app-name... up, run.8533 (Free)
~ $ flask create-dummy-data
Usage: flask [OPTIONS] COMMAND [ARGS]...
Try "flask --help" for help.
Error: No such command "create-dummy-data".
这是我的app/cli.py 文件:
import lorem
from app import db
from app.models import Survey, Question, Option, Answer, Response
def register(app):
@app.cli.command()
def create_dummy_data():
"""Create lorem ipsum questions and answers for testing."""
survey = Survey()
db.session.add(survey)
for _ in range(3):
question = Question(survey=survey, category='likert', question=lorem.sentence())
db.session.add(question)
for _ in range (2):
question = Question(survey=survey, category='word', question=lorem.sentence())
db.session.add(question)
db.session.commit()
还有我的run.py 文件:
from app import create_app, db, cli
from app.models import Survey, Question, Option, Answer, Response
app = create_app()
cli.register(app)
@app.shell_context_processor
def make_shell_context():
return {'db': db,
'Survey': Survey,
'Question': Question,
'Option': Option,
'Answer': Answer,
'Response': Response
}
为什么这可以在本地工作,但不能在 Heroku shell 上工作?
【问题讨论】:
-
你确定你定义
create-dummy-data的文件已经提交了吗? -
@Chris,我没想到,但我只是仔细检查了一下,确实如此。
-
heroku run flask create_dummy_data是否有效(使用下划线而不是破折号)? -
heroku run flask create_dummy_data --remote staging和heroku run bash --remote staging后跟flask create_dummy_data都不工作。 -
为什么你的函数定义在另一个名为
register的函数中?我对自定义 Flask 命令不是很熟悉,但我在 the documentation 中没有看到类似的东西。