Me gustaría usar un solo dominio como entorno de ensayo para varias aplicaciones de matraz que eventualmente se ejecutarán en sus propios dominios.
Algo como:
dónde:
o:
Aplicación de inicio:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello from Flask!'
Archivo de configuración de inicio WSGI:
import sys project_home = u'/home/path/sample1' if project_home not in sys.path: sys.path = [project_home] + sys.path from app import app as application
Refiriéndose a:
http://flask.pocoo.org/docs/0.10/patterns/appdispatch/
No sé dónde agregar el código dado en los documentos como ejemplo y cómo debería ser create_app, default_app, get_user_for_prefix.
Nota: Usar PythonAnywhere
SOLUCIÓN
Archivo de configuración WSGI después de la entrada de Glenns:
import sys # add your project directory to the sys.path project_home = u'/home/path/app1' if project_home not in sys.path: sys.path = [project_home] + sys.path from werkzeug.wsgi import DispatcherMiddleware from app import app as app1 from app2.app import app as app2 from app3.app import app as app3 application = DispatcherMiddleware(app1, { '/app2': app2, '/app3': app3 })
Estructura de la carpeta:
app1 folder app2 folder app3 folder
La clave a tener en cuenta, aquí, es que en realidad tendrás 4 aplicaciones (3 aplicaciones individuales y una aplicación combinada). Esto es ignorar la distinción de puesta en escena / en vivo porque la puesta en escena y en vivo son solo copias entre sí en diferentes directorios.
Cree cada una de las aplicaciones individuales y haga que respondan en sus dominios individuales. Luego, cree una nueva aplicación que importe las variables de la aplicación de las aplicaciones individuales y las combine utilizando DispatcherMiddleware
como en el ejemplo bajo el título “Combinación de aplicaciones” en la página de documentos a la que se vincula.
Esto funcionó para mí:
Estructura de la carpeta
DISPATCHER (folder) dispatcher.py app1 (folder) __init__.py app2 (folder) __init__.py app3 (folder) __init__.py
dispatcher.py
from flask import Flask from werkzeug.wsgi import DispatcherMiddleware from werkzeug.exceptions import NotFound from app1 import app as app1 from app2 import app as app2 from app3 import app as app3 app = Flask(__name__) app.wsgi_app = DispatcherMiddleware(NotFound(), { "/app1": app1, '/app2': app2, '/app3': app3 }) if __name__ == "__main__": app.run()
app1 a app3 __init__.py
from flask import Flask app = Flask(__name__) @app.route("/") def index_one(): return "Hi im 1 or 2 or 3" if __name__ == "__main__": app.run()
Trabajando
python app.py localhost:5000/app1 "Hi im one" localhost:5000/app2 "Hi im two" localhost:5000/app3 "Hi im three"
Otra configuracion
Puede importar otra aplicación, como app0 y agregar un menú a las aplicaciones, cambiando esto con NotFound()
Esto ayudó
Despacho de aplicaciones