【问题标题】:Why won't my flask command work on Heroku?为什么我的烧瓶命令不能在 Heroku 上运行?
【发布时间】: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 stagingheroku run bash --remote staging 后跟 flask create_dummy_data 都不工作。
  • 为什么你的函数定义在另一个名为register的函数中?我对自定义 Flask 命令不是很熟悉,但我在 the documentation 中没有看到类似的东西。

标签: heroku flask


【解决方案1】:

这是最简单的事情:Heroku 没有在暂存环境的变量中设置$FLASK_APP。添加允许命令行工具运行。

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 2016-02-07
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2020-09-10
    • 2020-04-20
    • 2010-10-21
    • 2021-11-18
    相关资源
    最近更新 更多