Google App Engine的新项目结构

时间:2016-02-24 17:00:04

标签: google-app-engine google-app-engine-python

我发现这个问题已经存在answer,但我觉得它过时了。从那时起,许多事情发生了变化现在有modulescloud_endpointswebapp2。什么应该是我的项目的良好目录结构,允许我轻松添加/修改功能。

例如,我应该能够管理:

  1. 模块。
  2. Cron jobs。
  3. 任务队列。
  4. 云端点。

2 个答案:

答案 0 :(得分:3)

我首先看看模块,至少出于以下原因:

  • 模块在很多方面(几乎)等同于旧文档/引用中的整个(单模块)应用程序,因此一旦模块在应用程序层次结构中的位置被阐明,引用应用程序上下文的各种帖子通常可以外推到只是一个仅模块的上下文。
  • 现在,应用可以针对不同的模块使用不同的语言/沙箱(请参阅Run both Java and PHP on google app engine project),甚至可以针对同一模块的不同版本使用(请参阅Google App Engine upgrading part by part

就个人而言,我坚持使用the recommended多模块应用程序结构 - 每个模块都有自己的目录,位于应用程序目录下一级:

enter image description here

应用程序的顶级目录将保留每个应用程序的配置(不适用于特定模块):dispatch.yamlcron.yamlindex.yamlqueue.yaml 。请注意,cron作业和任务队列定义属于此处(但没有什么能阻止您根据请求的路径将各种cron作业路由/分派到各个模块)。

我还会在应用程序的顶级目录中放置我想要以干燥方式在多个模块中共享的任何文件/目录。这些文件/目录将由模块通过在相应模块内进行符号链接来共享,以便模块在部署时获得自己的副本。可以以这种方式共享几乎可以作为单独文件或目录存在的任何

最后,特定模块的推荐文件/目录结构可能还取决于模块语言/沙箱,使用的框架,开发人员的风格/偏好等。我认为不可能提供一个-size-fits-all建议,在所有情况下都是有效/可接受的。

答案 1 :(得分:0)

端点只是基本REST URL的RPC(强类型)版本,其附加优势是它们可以用于生成的客户端库。因此,端点配置和定义属于SAME目录中的模块(即移动后端),就像它们的REST对应物一样。换句话说,如果你在Module1中拥有(或将拥有)一个REST端点用于"用户登录",那么你应该使用"用户登录" module1目录中的端点。此外,如果您不喜欢符号链接方法,则可以将module1.yaml文件向上移动一级,然后整个模块可以从" common" 。目录