首页 > 解决方案 > Flask 应用程序和 Node.JS 应用程序

问题描述

我为我们公司使用的系统编写了一个 Flask Web 应用程序。但是,我们还有另一个运行在 Node.JS 上的 Web 应用程序。“问题”是我的同事在节点上写所有东西,而我用 Python 写所有东西。

我们希望在一个网页上实现这两个应用程序 - 例如:

  1. 我的应用程序将在 example.com/assistant 上运行
  2. 他的应用程序将在 example.com/app1 和 example.com/app2 上运行

我们应该怎么做?我们能否以某种方式实现我与他的模板一起使用的模板,反之亦然?

先感谢您!

标签: pythonnode.jsflask

解决方案


为来自同一域的不同应用程序提供服务

您可以使用haproxy根据 ACL 规则将请求定向到特定服务。

您可以使用path_beg规则将任何以特定路径开头的请求定向到相应的服务器。请参见下面的示例。

/etc/haproxy/haproxy.cfg

# only relevant part of the config file
# assumes all apps are on one machine
frontend http-in
  bind *:80
  acl py_app1 path_beg /assistant
  acl node_app1 path_beg /app1
  acl node_app2 path_beg /app2
  default_backend main_servers

backend py_app1
  server flask_app 127.0.0.1:5000

backend node_app1
  server nodejs1 127.0.0.1:4001

backend node_app2
  server nodejs2 127.0.0.1:4002

backend main_servers
  server other1 127.0.0.1:3000 # nginx, apache, or whatever

在应用程序之间共享模板代码

这会更难,因为您需要就某种格式达成一致,这种格式需要与语言和框架无关,并且可能没有逻辑。

Mustache 声称是“呈现无逻辑视图的与框架无关的方式”。几年前我用过它,所以这是第一个想到的,但是你应该对此做更多的研究,也许有一些更合适的。

问题是实际上保持模板始终与应用程序同步,而不是破坏视图的功能。如果模板发生更改,则您需要测试使用此模板文件的所有应用程序。此外,您可能会在不同时间阻止彼此更新您的应用程序,因为如果你们中的一个人更改模板文件,那么您必须达成共识,更新所有相关应用程序,并同时部署它们。


推荐阅读