如何用WSGI实现Flask应用的路径调度?

2024-09-27 02:19:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望使用单个域作为多个flask应用程序的登台环境,这些应用程序最终将在各自的域上运行。在

比如:

  • 示例_staging.com/app1在
  • 示例_staging.com/app2在
  • 示例_staging.com/app3在

其中:

  • 示例_staging.com/app1与app1.example相同_staging.com网站在
  • 示例_staging.com/app2与app2.example相同_staging.com网站在
  • 示例_staging.com/app3与app3.example相同_staging.com网站在

或者:

  • 示例_staging.com/app1与app1.com相同
  • 示例_staging.com/app2与app2.com相同
  • 示例_staging.com/app3与app3.com相同

入门应用程序:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from Flask!'

WSGI Starter配置文件:

^{pr2}$

指:

http://flask.pocoo.org/docs/0.10/patterns/appdispatch/

我不知道如何添加文档中给出的代码作为示例,以及create_app,default_app,get_user_for_prefix应该是什么样子。在

注意:使用pythonanwhere

解决方案

Glenns输入后的WSGI配置文件:

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
})

文件夹结构:

app1 folder
    app2 folder
    app3 folder

Tags: pathfromimportprojectcomapp应用程序flask
2条回答

关键是要有3个单独的应用程序。这忽略了staging/live的区别,因为staging和live只是不同目录中彼此的副本。在

创建每个单独的应用程序并让它们在各自的域上响应。然后创建一个新的应用程序,从各个应用程序导入application变量,并使用DispatcherMiddleware组合它们,就像您链接到的doc页面上标题“组合应用程序”下的示例一样。在

这对我很有效:

文件夹结构

DISPATCHER (folder)
   dispatcher.py

   app1 (folder)
       __init__.py

   app2 (folder)
       __init__.py

   app3 (folder)
       __init__.py

调度程序.py

^{pr2}$

app1到app3初始化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()

工作

python app.py

localhost:5000/app1 "Hi im one"
localhost:5000/app2 "Hi im two"
localhost:5000/app3 "Hi im three"

另一种配置

您可以导入另一个应用程序,如app0,并在应用程序中添加一个菜单,用NotFound()更改此菜单

这有助于

Application Dispatching

相关问题 更多 >

    热门问题