Heroku无法启动我的应用程序,但“工头开始”工作

时间:2012-08-09 22:40:31

标签: heroku flask gunicorn

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

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

3 个答案:

答案 0 :(得分:1)

我目前的解决方案是:我从括号中删除,例如,

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

虽然这完全在我的本地盒子上爆炸,但它似乎只能在Heroku的系统上运行。我仍然希望Heroku的支持团队可以弄清楚它为什么在一个地方工作,而不是另一个地方。在那之前,我将使用未转义的版本在本地进行测试,然后在推送到Heroku之前将逃脱放回去。

答案 1 :(得分:1)

我在日志中没有任何内容得到相同的错误500。

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

我遵循了本教程。

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

答案 2 :(得分:0)

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

如果你改变了,我猜它会很好用,因为你的其他东西看起来不错。