2012-12-05 165 views
15

我試圖在Heroku上開發我的第一個「大」應用程序Flask,我試圖結合這裏的基本教程:https://devcenter.heroku.com/articles/python與這裏的說明:http://flask.pocoo.org/docs/patterns/packages/#larger-applications。它的工作原理與當地「工頭開始」,但是當我推到Heroku的我得到一個錯誤,該錯誤的端口正在使用:部署Flask應用程序到Heroku

啓動過程中使用命令python run.py 2012-12-04T23:45:18 + 00: 00應用[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)

我是新來的這一切,但它升ooks喜歡它試圖在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!' 

回答

24

我沒有使用Heroku的,但對我來說,它看起來像他們有瓶保留端口,特別是33507.它看起來像它會嘗試使用環境變量,我不知道如何在Heroku中設置。好消息是你可以告訴Flask使用哪個端口。

試試這個:

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

,它看起來像端口加入在Heroku上的ENV像這樣做:

heroku config:add PORT=33507 

應該唯一要做的其中之一。我會嘗試第一個,因爲它對我來說是解決問題的直接方法。

編輯
從您的文章讀了這篇文章後,我看到了問題的用武之地。

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

該行表示,從環境中獲得的PORT的值,如果它被設置,否則使用5000,我不知道爲什麼他們不會允許它從5000運行,如果這就是在他們的文檔,但我會嘗試這種變化:

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

感謝您指出我在正確的迪rection。我終於通過改變運行來實現它。py to:'import os' 'from pml import app' 'port = int(os.environ.get('PORT',5000))' 'app.run(host ='0.0.0.0',port =端口)' – crix