22

Heroku で Flask を使用して最初の「大規模」アプリを開発しようとしています。基本的なチュートリアル ( https://devcenter.heroku.com/articles/python)と次の手順を組み合わせようとしています: http:// Flask.pocoo.org/docs/patterns/packages/#larger-applications . 「職長開始」でローカルで動作しますが、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] で実行: * で再起動reloader 2012-12-04T23:45:23+00:00 heroku[web.1]: エラー R11 (Bad bind) -> ポート 5000 にバインドされたプロセスは 33507 である必要があります (環境変数 PORT を参照)

私はこれらすべてに慣れていませんが、Heroku で「ローカルに」実行しようとしているようです。あらゆる組み合わせを試しましたが、うまくいきません。現在の私の非常に単純なコードは次のとおりです(アプリは「pml」と呼ばれます):

ディレクトリ: /pml

プロファイル:

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!'
4

1 に答える 1

35

私は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 からの実行を許可しない理由はわかりませんが、この変更を試してみます。

port = int(os.environ.get('PORT', 33507))
于 2012-12-05T00:25:11.303 に答える