在Python

时间:2015-10-17 12:27:59

标签: python mysql api rest

我的任务是构建一个框架来统一六个在他们之间共享一些共同功能的python webapps。 当前设置包括一个apache Web服务器,提供一个特定的cgi脚本(对于每个应用程序),它与一个简单的XMLRPC服务(再次为每个应用程序提供不同的服务)进行通信,后者又运行数据库查询,将文件写入磁盘,运行外部脚本等。

这个想法是废除冗余代码(例如6个不同的RPC服务创建和管理6个不同的连接到同一个数据库,执行非常相似的查询等),以及整个XMLRPC的东西。此外,保留python中的内容并保持双层抽象 - 客户端应用程序不能直接与运行查询和写入磁盘的api通信;它必须与中间api(当前是cgi脚本)对话,后者又与执行所有查询/磁盘写入的进程通信。

由于这是我的第一个主要的Python工作,我在寻找正确的,干燥的,模块化的和pythonic的方法来构建这个框架时有些困难。

理想情况下,我想构建一个REST api,客户端的代码(目前在React.js中实现)可以直接与之通信。 然后,这个api应该能够与另一个内部REST api(目前由XMLRPC进程处理)进行交互,这将完成所有繁重工作(前面提到的db查询 - 可能使用ORM,执行任务,编写文件,以及类似)。

但是,我不确定我应该如何实现跨api通信 - 如果它是通过HTTP(即使他们生活在同一台服务器上?)或其他一些协议I'我不知道?

另外,我应该如何整合常见的代码?

是否应该有一个单独的模块/进程来保持与我们的数据库的实时连接,并且不同的apis连接到它?

如何使用这样的方案实现ORM,因为我不希望新开发人员直接查询数据库。我希望他们有一个他们交谈的明确模型。

我知道这是一种漫长而复杂的说法,我已经卡住了#34;为此,我道歉,如果被问到,我会乐意提供更多详细信息,不过我要问的是什么因为更多的一般指导原则:

  • 不同的REST apis(例如使用Flask + SQLAlchemy实现)如何相互通信,无论它们是在同一台服务器上,还是在不同的服务器上?

  • 如何将常见任务(例如连接到数据库)抽象为单独的进程?

  • 最后,保持整个模块化的一些好的,常识性的规则是什么?

0 个答案:

没有答案