2012-08-09 64 views
4

我试图部署一个相当简单的瓶应用Heroku的雪松堆栈,但我总是看到以下错误:的Heroku无法启动我的应用程序,但'工头start`工作

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

回答

1

我目前的解决办法是这样的:我括号进行转义,例如,

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

虽然这完全在我的本地箱爆炸,它似乎工作Heroku的系统只是桃色。我仍然希望Heroku的支持团队能够弄清楚为什么它能在一个地方工作,而不是另一个地方。在此之前,我只会在非本地版本上进行本地测试,然后在推送到Heroku之前将逃逸放回。

+0

我只是用这个,它解决了我所有的问题。太棒了。疯狂,但太棒了! – wheaties 2012-12-15 23:55:17

0

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

如果你改变了这一点,我猜它会工作正常,因为你的东西的其余部分看起来不错。

+0

create_app()是如何获得应用程序实例的句柄。 – 2012-08-15 20:29:49

相关问题