gpt4 book ai didi

google-app-engine - 就文件夹结构而言,Google App Engine 应用程序中的默认服务/模块能否成为非默认服务/模块的 sibling ?

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:33 25 4
gpt4 key购买 nike

更新:现在模块被称为服务

我想将我项目的模块组织到各种子文件夹中,其中每个子文件夹包含与每个模块相关的代码。特别是,我希望包含默认模块的文件夹与其他模块处于同一级别(即它们都是兄弟)。我正在按照 Modules documentation 中显示的图表进行操作:

diagram
(来源:google.com)

然而,让我感到困惑的是声明“Important: The app.yaml file must be located in your application's root directory”。这是否意味着默认模块(及其 app.yaml)必须位于项目根目录中,因此是非默认模块的父级?

最佳答案

模块都可以并排放置。 <module>.yaml对于每一个都可以在模块目录中。

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

default模块的配置文件甚至不必调用 app.yaml (或其目录称为 default )。我会将应用程序级配置文件( cron.yamldispatch.yamlqueue.yamlindex.yaml )保留在顶层,最终根据需要将它们符号链接(symbolic link)到默认(或其他)模块(一些工具可能会以其他方式提示)。

例如,这是我为我的一个应用程序得到的结构(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

调用相关工具时注意即可。这是我为那个应用程序准备的备忘单,从应用程序的目录执行,其中一些也反射(reflect)在 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> .

运行开发服务器:

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"

关于google-app-engine - 就文件夹结构而言,Google App Engine 应用程序中的默认服务/模块能否成为非默认服务/模块的 sibling ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34110178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com