我正在尝试使用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'
由于
答案 0 :(得分:2)
少数事情:
__name__ == "__main__"
位DispatcherMiddleware
没有run()
方法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,
})
不确定这是否是最好的方法,但它对我有用。