2012-12-05 13 views
15

Próbuję opracować moją pierwszą "dużą" aplikację z Flask na Heroku i próbuję połączyć podstawowy tutorial tutaj: https://devcenter.heroku.com/articles/python z instrukcjami tutaj: http://flask.pocoo.org/docs/patterns/packages/#larger-applications. Działa lokalnie z „majster start”, ale gdy wciskam do Heroku pojawia się błąd, że źle port jest używany: ProcesRozmieszczanie aplikacji Flask do Heroku

zaczynające polecenia python run.py 2012-12-04T23: 45: 18 + 00: 00 app [web.1]: * Działa na http://127.0.0.1:5000/ 2012-12-04T23: 45: 18 + 00: 00 aplikacja [web.1]: * Restart z ponownym załadowaniem 2012-12-04T23: 45: 23 + 00: 00 Heroku [web.1]: błąd R11 (Bad wiążą) -> Proces związany z portem 5000, powinno być 33.507 (patrz zmienną środowiskową port)

Jestem nowy w tym wszystkim, ale l ooki lubią próbować uruchomić "lokalnie" na Heroku. Próbowałem różnych kombinacji, ale nie mogę go uruchomić. My bardzo prosty kod teraz jest (aplikacja nazywa się "PML"):

katalogu:/PML

Procfile:

web: python run.py 

run.py:

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

katalogu :/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!' 

Odpowiedz

24

Nie używałem Heroku, ale dla mnie, wygląda na to, że mają zarezerwowaną port Kolby konkretnie 33507. Wygląda na to, będzie starał się wykorzystać środowisko zmienna, której nie jestem pewien jak ustawić w Heroku. Dobrą wiadomością jest to, że możesz powiedzieć Flask, z którego portu korzystać.

spróbuj tego:

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

i wygląda na to, dodając port do env w Heroku odbywa się to tak:

heroku config:add PORT=33507 

Ty powinny wystarczy wykonać jedną z nich. Spróbowałbym tego pierwszego, ponieważ dla mnie jest to prosty sposób na naprawienie problemu.

EDIT
Po przeczytaniu artykułu z Twojego postu, widzę gdzie kwestia wchodzi.

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

Linia ta mówi, uzyskać wartość PORT ze środowiska, jeśli jest ustawiony, w przeciwnym razie używać 5000. nie jestem pewien, dlaczego oni nie pozwoli go uruchomić od 5000, czy to, co jest w ich docs, ale chciałbym spróbować tej zmiany:

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

Dzięki za naprowadzenie mnie w prawym di rekcja. W końcu udało mi się to osiągnąć, zmieniając bieg.py do: 'import os' ' from pml import app' ' ' port = int (os.environ.get ('PORT', 5000)) ' ' app.run (host = '0.0.0.0', port = port) ' – crix

Powiązane problemy