2016-06-06 9 views
4

Ich kann keine Methoden extern über ihre URL auflösen, sobald ich die Eigenschaft SERVER_NAME oder Host in FlasK festgelegt habe. Hier finden Sie meine app init config:Wie kann man Flaschen konfigurieren, um über die öffentliche IP-Schnittstelle erreichbar zu sein?

flask_sqlalchemy import SQLAlchemy 
from flask.ext.cors import CORS 
__authors__ = 'DarkStar1' 

from flask import Flask 

app = Flask(__name__) 
app.config.from_object('config') 
app.config['DEBUG'] = True 
app.config['SERVER_NAME'] = '0.0.0.0' 
#app.run(host='0.0.0.0') 
CORS(app) 

db = SQLAlchemy(app) 

from oms import user_service, person_service 

ich die DEBUG param/Eigenschaft kann aber versuchen, den Host oder SERVER_NAME Ergebnisse in allen URLs, http gesetzt: // < Hostname>: 5000/Test zum Beispiel, was zu 404s führt. Da der Server ein Remote-Dev-Server ist, kann ich tunneln und 200s auf allen URLs von Flasch über localhost erhalten. Der Port ist aktiviert und die Flashen-Version, mit der ich arbeite, ist 0.10.1 auf Python 2.7.6. Ich habe Suchen und Lesen von Dokumenten ohne Erfolg.

+0

testen Sie nicht, die Entwickler verwenden Server extern. Verwenden Sie einen Produktionsserver wie uWSGI, der von Nginx als Proxyserver verwendet wird. http://flask.pooco.org/docs/dev/deploying/ – davidism

+0

@davidism Es ist ein interner Remote-Dev-Server, der nicht für die Produktion gedacht ist. –

+1

Der Dev-Server ist nicht garantiert stabil, und Sie verlassen sich darauf, also verlassen Sie sich auf einem echten WSGI-Server. – davidism

Antwort

7

Laufkolben

app.run(host="0.0.0.0:PORT#") 

Look für Ihre IPv4-Adresse mit ipconfig in Ihrer Eingabeaufforderung, und in Ihrem Browser verwenden, können Sie Ihre App mit Ihrer IP-Adresse zugreifen: port #

Sie müssen möglicherweise konfigurieren Dein Router (Port Forwarding) um es öffentlich zugänglich zu machen, sonst kannst du herunterladen/https://ngrok.com/ verwenden ----> Dadurch wird dein localhost hinter einem NaT oder einer Firewall ins Internet gestellt.

Sobald Sie donwload, können Sie es konfigurieren, indem

ngrok http localhost:5000 

läuft das Sie eine RANDOMsubdomain.ngrok.io liefert und Sie können Ihre App von so ziemlich überall

+0

run.app() oder app.run()? –

+0

oops, app.run()! – glls

+1

Ich habe es mit app.run (host = "0.0.0.0") –