如何在同一服务器和同一端口上创建Flask应用程序的多个实例

时间:2020-04-02 12:04:30

标签: python flask

如何在同一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__

我也检查过使用蓝图,但据我了解,它们打算用于不同的视图。

3 个答案:

答案 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之类的应用程序的多个实例。