FlaskアプリをHerokuにデプロイする 質問する

FlaskアプリをHerokuにデプロイする 質問する

私は Heroku 上で Flask を使用して初めての「大規模な」アプリを開発しようとしており、ここで基本的なチュートリアルを組み合わせようとしています。詳しくはこちら手順はこちら:http://flask.pocoo.org/docs/patterns/packages/#larger-applicationsローカルでは「foreman start」で動作しますが、Heroku にプッシュすると、間違ったポートが使用されているというエラーが発生します。

コマンドpython run.py2012-12-04T23:45:18+00:00 app[web.1] でプロセスを開始: * http://127.0.0.1:5000/2012-12-04T23:45:18+00:00 app[web.1] で実行中: * リローダーで再起動中 2012-12-04T23:45:23+00:00 heroku[web.1]: エラー R11 (バインドが不正) -> プロセスはポート 5000 にバインドされていますが、33507 である必要があります (環境変数 PORT を参照)

私はこのすべてに不慣れですが、Heroku 上で「ローカル」に実行しようとしているようです。さまざまな組み合わせを試しましたが、うまくいきません。現在私が使用している非常にシンプルなコードは次のとおりです (アプリの名前は「pml」です)。

ディレクトリ: /pml

プロセスファイル:

web: python run.py

実行:

from pml import app
app.run(debug=True)

ディレクトリ: /pml/pml/

__init__.py

from flask import Flask
app = Flask(__name__)

import pml.views

ビュー.py

from pml import app

@app.route('/')
def index():
    return 'Hello World!'

ベストアンサー1

Heroku を使ったことはありませんが、Flask 用に予約済みのポート (具体的には 33507) があるように見えます。環境変数を使用しようとしているようですが、Heroku でどのように設定すればよいかわかりません。幸いなことに、Flask に使用するポートを指示できます。

これを試して:

app.run(debug=True, port=33507)

Heroku の env に PORT を追加する方法は次のようになります。

heroku config:add PORT=33507

あなたすべきこれらのいずれか 1 つだけを実行する必要があります。私にとっては、最初の方法が一番問題を解決する直接的な方法なので、最初の方法を試してみます。

編集
あなたの投稿の記事を読んで、問題がどこにあるのかが分かりました。

port = int(os.environ.get('PORT', 5000))

この行は、値が設定されている場合は環境から値を取得しPORT、そうでない場合は 5000 を使用するように指示しています。ドキュメントに 5000 と記載されている場合、なぜ 5000 から実行できないのかはわかりませんが、次の変更を試してみます。

port = int(os.environ.get('PORT', 33507))

おすすめ記事