4

我正在尝试将一个相当简单的 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,一切正常。如果 Heroku 在foreman本地运行良好,为什么会出现问题?

更新:我也试过用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

4

3 回答 3

1

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

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

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

于 2012-08-15T21:01:18.410 回答
1

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

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

我按照本教程进行操作。

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

于 2012-12-07T14:49:43.943 回答
0

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

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

于 2012-08-15T19:52:36.527 回答