【问题标题】:Heroku fails to start my app, but `foreman start` worksHeroku 无法启动我的应用程序,但 `foreman start` 工作
【发布时间】:2012-08-07 05:55:12
【问题描述】:

我正在尝试将一个相当简单的 Flask 应用程序部署到 Heroku 的 cedar 堆栈,但我一直看到以下错误:

2012-08-09T22:37:49+00:00 heroku[web.1]: State changed from crashed to starting
2012-08-09T22:37:52+00:00 heroku[web.1]: Starting process with command `gunicorn pytips.app:create_app() -b 0.0.0.0:42152 -w 3`
2012-08-09T22:37:53+00:00 app[web.1]: bash: -c: line 0: syntax error near unexpected token `('
2012-08-09T22:37:53+00:00 app[web.1]: bash: -c: line 0: `gunicorn pytips.app:create_app() -b 0.0.0.0:42152 -w 3'

我把这个作为我的Procfile

web: gunicorn pytips.app:create_app() -b 0.0.0.0:$PORT -w 3

当我通过运行foreman start 进行本地测试时,一切正常。如果 foreman 在本地可以正常使用,Heroku 为什么会出现问题?

更新:我还尝试使用heroku run 进行测试。这是产生的结果:

heroku run --app pytips gunicorn pytips.app:create_app() -b 0.0.0.0:$PORT -w 3

什么也没给我。

heroku run --app pytips 'gunicorn pytips.app:create_app() -b 0.0.0.0:$PORT -w 3'

给我heroku:108: command not found: -b

【问题讨论】:

    标签: heroku flask gunicorn


    【解决方案1】:

    我目前的解决方案是:我转义括号,例如,

    web: gunicorn pytips.app:create_app\(\) -b 0.0.0.0:$PORT -w 3
    

    虽然这在我的本地机器上完全爆炸,但它似乎在 Heroku 的系统上运行良好。我仍然希望 Heroku 的支持团队能够弄清楚为什么它在一个地方有效,而在另一个地方无效。在那之前,我只会在本地使用未转义的版本进行测试,然后在推送到 Heroku 之前将转义放回。

    【讨论】:

    • 我刚刚使用了它,它解决了我所有的问题。极好的。疯狂,但太棒了!
    【解决方案2】:

    我收到了同样的错误 500,日志中没有任何内容。

    原来 Heroku 不喜欢我的本地 SQLite 数据库。我能够设置免费的 PostgreSQL 数据库并且错误消失了。

    我按照本教程进行操作。

    http://blog.y3xz.com/blog/2012/08/16/flask-and-postgresql-on-heroku/

    【讨论】:

      【解决方案3】:

      所以第一件事是你的gunicorn 命令不正确。当您运行 gunicorn 时,您需要将您的应用实例传递给它。因此,例如,如果您的 Flask 应用程序是在 pytips.py 文件中定义的,您可以通过以下方式运行 gunicorn:gunicorn pytips:app -b ...

      如果你改变它,我猜它会正常工作,因为你的其他东西看起来不错。

      【讨论】:

      • create_app() 是您获取应用实例句柄的方式。
      猜你喜欢
      • 2019-12-26
      • 2012-08-15
      • 1970-01-01
      • 2012-08-23
      • 2013-10-01
      • 2012-10-22
      • 2010-12-27
      • 2013-01-20
      • 1970-01-01
      相关资源
      最近更新 更多