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

Mih*_*ssu 7 python git google-app-engine module google-cloud-datastore

我有一些GAE应用程序,我正在考虑分成三个模块:default(www), mobileapi但我有理解模块以及如何组织代码中的一些困难.

根据这里找到的图像,这是一个应用程序应该是什么样子. 谷歌推荐的GAE App结构

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

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
Run Code Online (Sandbox Code Playgroud)


  • api模块提供了大量的API函数,并且可以自行运行.

  • mobile模块只是一堆html + js,api通过ajax 与模块配合得很好.

  • default(www)模块将成为一天,就像mobile只包含HTML + JS文件,并与工作模块api通过AJAX模块,但是通过现在大部分的模板生成服务器端的Jinja2这是造成一些问题.


问题:

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

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

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

svp*_*ino 2

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

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