Heroku 无法启动我的应用程序,但“foreman start”可以工作

Han*_*Gay 5 heroku flask gunicorn

我正在尝试将一个相当简单的 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'
Run Code Online (Sandbox Code Playgroud)

我把这个作为我的Procfile

web: gunicorn pytips.app:create_app() -b 0.0.0.0:$PORT -w 3
Run Code Online (Sandbox Code Playgroud)

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

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

heroku run --app pytips gunicorn pytips.app:create_app() -b 0.0.0.0:$PORT -w 3
Run Code Online (Sandbox Code Playgroud)

没有给我任何东西。

heroku run --app pytips 'gunicorn pytips.app:create_app() -b 0.0.0.0:$PORT -w 3'
Run Code Online (Sandbox Code Playgroud)

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

Han*_*Gay 2

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

web: gunicorn pytips.app:create_app\(\) -b 0.0.0.0:$PORT -w 3
Run Code Online (Sandbox Code Playgroud)

虽然这在我本地的盒子上完全爆炸了,但它似乎在 Heroku 的系统上工作得很好。我仍然希望 Heroku 的支持团队能够弄清楚为什么它在一个地方有效,但在另一个地方却不起作用。在那之前,我将仅使用未转义的版本在本地进行测试,然后在推送到 Heroku 之前将转义放回去。