运行多个Flask应用程序

时间:2018-02-21 12:38:57

标签: python python-3.x flask gunicorn

我正在尝试使用DispatcherMiddleware运行2个Flask应用程序,但它无法运行。

以下是我的文件:

hello_world_app.py

from flask import Flask
app = Flask(__name__)


@app.route("/hello")
def hello():
    return "Hello World!"  

bye_world_app.py

from flask import Flask
app = Flask(__name__)


@app.route("/bye")
def hello():
    return "Bye World!"

wsgi.py

if __name__ == "__main__":
    application = DispatcherMiddleware(hello_app, bye_app)
    application.run()

我试图像这样运行它:

  

gunicorn --bind 0.0.0.0:9999 wsgi

这是我得到的错误:

  

无法找到应用程序:'wsgi'

由于

1 个答案:

答案 0 :(得分:2)

少数事情:

  • 我认为你不需要__name__ == "__main__"
  • DispatcherMiddleware没有run()方法
  • 你真的不需要经营它,gunicorn会为你做这件事
  • DispatcherMiddleware期望将应用作为第一个参数,并可选择mounts的dict。我相信如果您愿意,可以将root应用设置为None

所以我会尝试这样做:

# hello_world_app.py
@app.route("/")
def hello():
    return "Hello World!"

# bye_world_app.py
@app.route("/")
def hello():
    return "Bye World!"

# wsgi.py
from hello_world_app import app as hello_app
from bye_world_app import app as bye_app
from werkzeug.wsgi import DispatcherMiddleware

application = DispatcherMiddleware(None, {
    '/hello': hello_app,
    '/bye': bye_app,
})

不确定这是否是最好的方法,但它对我有用。