2012-12-05 20 views
15

पर फ्लास्क ऐप को तैनात करना मैं अपने पहले "बड़े" ऐप को हेरोकू पर फ्लास्क के साथ विकसित करने की कोशिश कर रहा हूं और मैं यहाँ बुनियादी ट्यूटोरियल को गठबंधन करने का प्रयास कर रहा हूं: https://devcenter.heroku.com/articles/python यहां दिए गए निर्देशों के साथ: http://flask.pocoo.org/docs/patterns/packages/#larger-applications। यह "फोरमैन शुरुआत" के साथ स्थानीय स्तर पर काम करता है लेकिन जब मैं Heroku करने के लिए धक्का मैं एक त्रुटि है कि गलत पोर्ट उपयोग में है मिलता है: 45: 18 + 00 आदेश python run.py 2012-12-04T23 साथहेरोकू

शुरू की प्रक्रिया: 00 ऐप [वेब .1]: * http://127.0.0.1:5000/ 2012-12-04T23: 45: 18 + 00: 00 ऐप [वेब.1]: * रीलोडर के साथ पुनरारंभ करना 2012-12-04T23: 45: 23 + 00: 00 Heroku [web.1]: त्रुटि R11 (बुरा बाँध) -> पोर्ट 5000 के लिए बाध्य प्रक्रिया, होना चाहिए 33507 (वातावरण चर पोर्ट देखना)

मैं यह सब करने के लिए नया हूँ, लेकिन यह एल ओक जैसे यह हेरोोकू पर "स्थानीय रूप से" चलाने की कोशिश कर रहा है। मैंने संयोजनों के सभी प्रकार की कोशिश की है, लेकिन इसे काम पर नहीं लाया जा सकता है। मेरे बहुत ही सरल कोड अभी है (ऐप्लिकेशन कहा जाता है "पीएमएल"):

निर्देशिका:/पीएमएल

Procfile:

web: python run.py 

run.py:

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

निर्देशिका :/पीएमएल/पीएमएल/

__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. ऐसा लगता है कि यह एक ऐसा वातावरण का उपयोग करने की कोशिश करेंगे परिवर्तनीय, जो मुझे यकीन नहीं है कि हेरोोकू में कैसे सेट किया जाए। अच्छी खबर यह है कि आप फ्लास्क को बता सकते हैं कि किस पोर्ट का उपयोग करना है।

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

मुझे सही di में ओर इशारा करते हुए के लिए धन्यवाद rection। अंत में मैं इसे बदलकर काम करने के लिए मिला।पीई टू: 'आयात ओएस' ' पीएमएल आयात ऐप से 'पोर्ट = int (os.en वातावरण.get ('पोर्ट', 5000))' 'app.run (होस्ट = '0.0.0.0', पोर्ट = बंदरगाह) ' – crix