4

かなり単純な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

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

ログに何も記録されていない同じエラー 500 が発生していました。

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 に答える