当前位置: 首页 > 面试题库 >

就文件夹结构而言,Google App Engine应用程序中的默认服务/模块是否可以是非默认服务/模块的兄弟?

司空宣
2023-03-14
问题内容

更新:这些天modules被称为services。

我想将项目的模块组织到各个子文件夹中,其中每个子文件夹都包含与每个模块相关的代码。特别是,我希望包含默认模块的文件夹与其他模块处于同一级别(即,它们都是同级的)。我遵循模块文档中显示的图:


(来源:google.com)

但是,令我感到困惑的是“重要提示:app.yaml文件必须位于应用程序的根目录中”。这是否意味着默认模块(及其app.yaml)必须在项目根目录中,因此必须是非默认模块的父级?


问题答案:

模块可以并排放置。在<module>.yaml为每一个可以是模块DIR内部。

关于app.yaml文件的注释具有误导性,它实际上仅适用于单模块应用程序(许多文档并未针对多模块应用程序进行更新)。

该default模块的配置文件中甚至没有被调用app.yaml(或称为其目录default)。我会保持应用程序级的配置文件(cron.yaml,dispatch.yaml,queue.yaml和index.yaml)在顶层,最终符号链接它们到默认(或其他)模块(S)根据需要(有些工具可能另有抱怨)。

例如,这是我为一个应用程序所使用的结构(main目录包含default模块):

cron.yaml
dispatch.yaml
queue.yaml
index.yaml
main/cron.yaml -> ../cron.yaml
main/index.yaml -> ../index.yaml
main/main.yaml
main/queue.yaml -> ../queue.yaml
buildin/buildin.yaml
buildin/index.yaml -> ../index.yaml
buildin/queue.yaml-> ../queue.yaml

调用相关工具时只需注意。这是我从该应用程序的目录执行的该应用程序的备忘单,其中的一些内容也反映在pycharm项目配置中(我正在pycharm中运行开发服务器):

appcfg.py update main/main.yaml buildin/buildin.yaml
appcfg.py update_dispatch .
appcfg.py update_indexes -A <app-name> main
appcfg.py update_cron -A <app-name> .
appcfg.py update_queues -A <app-name> .

要运行devserver:

dev_appserver.py --host 0.0.0.0 --log_level=debug dispatch.yaml main/main.yaml buildin/buildin.yaml

更新:根据要求添加了一些我的配置文件。

该dispatch.yaml文件,负责buildin在appspot域和我的自定义域上的模块路由(其他所有路由自动路由到默认模块):

application: <my_app>
dispatch:
  - url: "buildin.my_domain.com/*"
    module: buildin
  - url: "buildin-dot-my_app.appspot.com/*"
    module: buildin
  - url: "*/buildin/*"
    module: buildin

该main.yaml文件中:

application: my_app
module: default
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:

- url: /(.*\.min\.css)$
  static_files: stylesheets/\1
  upload: stylesheets/.*\.min\.css$
  secure: always

- url: /(.*\.(ico|gif|png|jpg|svg))$
  static_files: images/\1
  upload: images/.*\.(ico|gif|png|jpg|svg)$
  secure: always

- url: .*
  script: main.app
  secure: always

libraries:
- name: webapp2
  version: "2.5.2"
- name: jinja2
  version: "2.6"
- name: pycrypto
  version: "2.6"

该buildin.yaml文件中:

application: my_app
module: buildin
version: 1
runtime: python27
api_version: 1
threadsafe: true
instance_class: B2

handlers:

- url: /(.*\.min\.js)$
  static_files: scripts/\1
  upload: scripts/.*\.min\.js$
  secure: always

- url: /(.*\.min\.css)$
  static_files: stylesheets/\1
  upload: stylesheets/.*\.min\.css$
  secure: always

- url: /(.*\.(ico|gif|png|jpg|svg))$
  static_files: images/\1
  upload: images/.*\.(ico|gif|png|jpg|svg)$
  secure: always

- url: /buildin/cron*
  script: buildin.app
  login: admin

- url: .*
  script: buildin.app
  secure: always

libraries:
- name: webapp2
  version: "2.5.2"
- name: jinja2
  version: "2.6"
- name: pycrypto
  version: "2.6"


 类似资料:
  • 我有一个带有Debian 9的新服务器。我使用

  • 在本章中,我们将研究Drupal中的Default Modules 。 安装Drupal后,您将看到总共44个默认模块。 您可以在Core section看到所有这些模块。 默认情况下,安装后会启用29个模块。 Step 1 - 单击Modules ,您将在CORE部分中看到模块列表,如以下屏幕所示。 以下是Durpal7中安装的default modules列表。 这些是Drupal所需的核心模

  • 我的类路径中有多个应用服务器,即通过spring-boot-starter-webflux的Netty和通过另一个依赖链的Tomcat。我如何确定在Spring Boot使用哪个应用服务器? 目前,Tomcat正在取代Netty启动。 重要提示:我不能排除任何一个,Tomcat是CXF用的,Netty是WebClient用的。

  • 所以,我一直在读C++标准,找到了[defns.Undefined](3.27,在我正在读的C++17草案中,请注意,当我在这里引用C++17时,我在其他标准中发现了类似的措辞)--这是未定义行为的定义。我注意到这样的措辞(强调我的): 注意:当本国际标准省略任何行为的明确定义时,或者当程序使用错误的构造或错误的数据时,可能会出现未定义的行为 现在,想想看,这有点道理。这有点像是说,如果标准没有给

  • 我正在尝试在 Go 应用引擎部署上使用具有域范围委派 (DwD) 的服务帐户。 我已按照使用 Google 应用程序默认凭据的步骤将服务帐户与应用引擎配合使用。 我让代码在我的开发计算机上本地运行,但我被困在从我的域中检索实际数据。 我用的是Admin SDK。在“向您的服务帐户授予域范围的权限”一节中,它说我的“服务帐户需要模拟其中一个用户来访问Admin SDK Directory API”。

  • 问题内容: 似乎Python 2.6.1在默认情况下不会从源代码编译bz2库。 我没有lib-dynload / bz2.so 添加它的最快方法是什么(无需从头开始安装Python)? 操作系统是Linux 2.4.32-grsec + f6b + gr217 + nfs + a32 + fuse23 + tg +++ opt + c8 + gr2b-v6.194#1 SMP Tue Jun 6