如何组织GAE模块的应用程序结构和代码?

时间:2014-10-15 18:12:54

标签: python git google-app-engine module google-cloud-datastore

我有一些GAE应用,我打算将它们分成三个模块: default www ), {{ 1}} mobile 但我在理解模块以及如何组织代码时遇到了一些困难。

根据找到的图片here,应用程序应该是这样的。 Google's Suggested GAE App structure

这是我到目前为止提出的简化结构:

api


  • gae-app/ ├── modules │   ├── api │   │   ├── app.yaml │   │   └── src │   │   └── main.py │   ├── mobile │   │   ├── app.yaml │   │   └── src │   │   └── index.html │   └── www │   ├── app.yaml │   └── src │   ├── main.py │   └── templates ├── cron.yaml ├── index.yaml └── queue.yaml 模块提供了大量API函数,并且可以自行运行。

  • api 模块只是一堆html + js,可以通过ajax与 mobile 模块一起使用

  • api default )模块有一天会变得像 www 模块只包含html + js文件并通过ajax使用 mobile 模块但是现在大多数模板都是通过 jinja2 在服务器端生成的一些问题。


问题:

  1. 由于 api api default )模块正在运行服务器端现在使用数据存储区,我在哪里将数据存储区模型保留在此映像/结构中?除此之外,他们都共享一些图书馆,我在哪里保留它们?我是否在应用程序的根文件夹中创建了一个新的“ lib ”文件夹并将公共/共享文件存储在那里,然后将其符号链接到每个模块?我正在寻找一些最佳实践。

  2. 使用单独的git repos进行所有这些工作的最佳方法是什么?我希望我的每个模块都有自己的存储库。如何使用Q1中的共享模型/库?使用模块的GAE应用程序似乎每个应用程序只允许一个www / dispath.yaml / cron.yaml / index.yaml / etc(不是每个模块),哪个repo会有这些文件?< / p>

  3. 我意识到问题没有一个正确的答案,但我正在寻找最佳实践。请注意,我刚刚开始使用模块,所以我理解它们的工作原理可能完全错误。

1 个答案:

答案 0 :(得分:2)

关于第一个问题:是的,您可以创建/ lib文件夹,将其放在文件夹结构的根目录中,并从那里引用所有常用代码。 www和api模块都应该能够访问(共享)此代码。

@Lipis回答了第二个问题:请查看此链接:How do I work with a git repository within another repository?