【问题标题】:Run multiple Flask applications运行多个 Flask 应用程序
【发布时间】:2018-02-21 12:38:56
【问题描述】:

我正在尝试使用 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'

谢谢

【问题讨论】:

  • 对我来说很好,你的文件夹结构是什么?
  • @Luis 所有 3 个文件都在同一个文件夹中。
  • 你在同一个文件夹中运行 gunicorn 吗?
  • 是的,在同一个文件夹中。

标签: python python-3.x flask gunicorn


【解决方案1】:

几件事:

  • 我认为你不需要__name__ == "__main__" bit
  • DispatcherMiddleware 没有 run() 方法
  • 你真的不需要运行它,gunicorn 会为你做的
  • DispatcherMiddleware 需要一个应用程序作为第一个参数,并且可以选择一个 mounts 的字典。如果您愿意,我相信您可以将根应用设置为 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,
})

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

【讨论】:

猜你喜欢
  • 2021-01-25
  • 2022-10-18
  • 2015-07-05
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 2018-02-01
  • 2022-01-15
相关资源
最近更新 更多