如何构建一个带有API和网页界面的Python网络服务?

0 投票
1 回答
711 浏览
提问于 2025-04-16 09:29

把你的API和用户网站分开是个好主意,所以我想请教一下,如何为一个同时开发API和前端的Python项目来安排模块和子模块的结构。

现在我们在部署时有两台不同的机器:一台是网络服务,负责使用API,另一台是网络应用。

我考虑的一个解决方案是,先建立一个最小的核心项目,这个项目负责初始化配置、管理测试执行、启动应用、后台运行等。

然后,利用Git子模块,把网络应用和API子模块分开,这样它们可以同时开发。

这样做的好处是,API可以有自己的版本控制(具体的提交版本),而网络应用的部署也不会互相干扰,只要确保向后兼容就行。

不过,这种方法也有一些缺点:

  1. 它依赖于Git
  2. 如果API有重大变化,还是需要重启网络应用(这在任何围绕API构建的服务中都是这样)
  3. 对于新手来说,git子模块可能会过于复杂,难以理解(我不太确定这一点)

一旦我们有足够的资源,就可以使用像zc.buildout这样的工具来进行部署。

还有一个解决方案,就是直接使用zc.buildout,建立一个主仓库,然后构建Python发布文件。

你觉得怎么样?

1 个回答

1

我建议把它们放在不同的代码库里。至于超级模块,这个就看你自己了。把它们不作为子模块并不会妨碍你在两个代码库中打标签,这样你就可以在不同版本之间保持同步。你提到子模块太复杂了,这个说法是对的。如果你决定使用子模块,我觉得可以把它当作一种保持特定版本同步的方式。我认为子模块的设计是为了把远程库添加到另一个项目中,而你实际上需要使用这些子模块,但其他人是在开发它们。

撰写回答