web-dev-qa-db-ja.com

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

HerokuでFlaskを使用して、最初の「大規模」アプリを開発しようとしています。基本的なチュートリアルをここで組み合わせようとしています: https://devcenter.heroku.com/articles/python ここでの手順: http://flask.pocoo.org/docs/patterns/packages/#larger-applications 。「foremanstart」でローカルに動作しますが、 Herokuにプッシュすると、間違ったポートが使用されているというエラーが表示されます。

コマンドpython run.py 2012-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

Procfile:

web: python run.py

run.py:

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

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

__init__。py

from flask import Flask
app = Flask(__name__)

import pml.views

view.py

from pml import app

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

Herokuを使用したことはありませんが、Flask用に予約されたポート(具体的には33507)があるようです。Herokuでの設定方法がわからない環境変数を使用しようとしているようです。良いニュースは、Flaskどのポートを使用するかを指定できることです。

これを試して:

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

そして、HerokuのenvにPORTを追加することは次のように行われます:

heroku config:add PORT=33507

あなたshouldこれらのうちの1つだけを行う必要があります。私にとっては、問題を解決するための簡単な方法であるため、最初に試してみます。

[〜#〜]編集[〜#〜]
あなたの投稿の記事を読んだ後、問題がどこにあるのかわかりました。

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

その行は、設定されている場合は環境からPORTの値を取得し、そうでない場合は5000を使用します。ドキュメントにあるのに5000からの実行を許可しない理由はわかりませんが、私はこの変更を試みます:

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