私は Heroku 上で Flask を使用して初めての「大規模な」アプリを開発しようとしており、ここで基本的なチュートリアルを組み合わせようとしています。詳しくはこちら手順はこちら:http://flask.pocoo.org/docs/patterns/packages/#larger-applicationsローカルでは「foreman start」で動作しますが、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
プロセスファイル:
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))