如何在同一Web服务器和同一端口上运行flask应用程序的多个实例?
当前我的flask应用程序具有以下目录结构:
├── app
│ ├── __pycache__
│ ├── static
│ └── templates
├── instance
├── src
└── __pycache__
应用程序开始使用flask run
时,它将在默认端口localhost:5000
上运行。
我能够创建该应用程序的副本并在两个端口5000和5001上运行,并且工作正常。
但是,我只想使用一台带有index.html
文件的服务器,其中
localhost:5000/index.html
有2个链接,用于重定向至app1的localhost:5000/app1/
和app2的localhost:5000/app2/
这是为了避免使用额外的端口。
我目前已将应用克隆到app2,但是不知道要运行两个应用。(下面是目录结构)
├── app
│ ├── __pycache__
│ ├── static
│ └── templates
├── app2
│ ├── __pycache__
│ ├── static
│ └── templates
├── instance
├── src
└── __pycache__
我也检查过使用蓝图,但据我了解,它们打算用于不同的视图。
答案 0 :(得分:1)
您可以使用werkzeug中间件来执行此操作。它允许您将多个应用程序安装在/app1/
和/app2/
之类的安装路径上。
您可以在werkzeug文档中阅读有关此内容的更多信息: https://werkzeug.palletsprojects.com/en/0.14.x/middlewares/
答案 1 :(得分:0)
您不需要使用两个应用程序。您可以让index.html包含以下代码行
@app.route('/app1')
def hello():
return render_template('app1.html')
@app.route('/app2')
def hello():
return render_template('app2.html')
这意味着您可以按指定的访问权限(localhost:5000/app1
访问app1或app2
答案 2 :(得分:0)
我会说您可以在不同的端口上运行2个应用程序,并使用反向代理对它们进行负载平衡。 Check out this guide。
作为替代方案,您可以运行带有gunicorn之类的应用程序的多个实例。