我不认为我的 gae python 应用程序具有灵活的环境,因为我多年前创建了它。现在我想尝试创建一个具有不同于 python 的运行时的模块,并使 python 应用程序与新的运行时、自定义运行时或其他运行时一起运行。也许混合 PHP 和 python 或类似的。我不需要它,但我想学习和探索可能性。我也有兴趣学习 Erlang 并使用 appengine 部署 Erlang 代码。我看到已经有人对此有疑问了
谷歌应用程序引擎上的erlang? https://stackoverflow.com/questions/1654759/erlang-on-google-app-engine
And 追踪器中的第 125 期 https://code.google.com/p/googleappengine/issues/detail?id=125#makechanges.
但实际上我们应该怎样做呢?如果我们创建自己的运行时,前提是允许。
我的 app.yaml 看起来像
application: montaoproject
version: newsearch
runtime: python27
api_version: 1
threadsafe: true
module: default
instance_class: F1
automatic_scaling:
min_idle_instances: 5
max_idle_instances: automatic
min_pending_latency: automatic
max_pending_latency: 30ms
max_concurrent_requests: 50
default_expiration: "14d 5h"
env_variables:
GAE_USE_MONTAO : 'anyvalue'
KOOL_VERSION : '17a'
includes:
- br.yaml # Brazil
- in.yaml # India
- us.yaml # USA
- pk.yaml
- search.yaml # search pages
- admin.yaml # admin pages
- providers.yaml # auth providers
- statics.yaml # static content
handlers:
- url: /(business|ai|newindia|insert-ad.html)
script: montao.app
- url: /blobview.*
script: kool_update.app
login: admin
- url: /market.*
script: main.app
- url: /
script: montao.app
- url: /(index.html|sign-up.html|login.html)
script: montao.app
- url: /(login.*|login|googlogin|googlogout|create/)
script: login.app
- url: /(customer_service.htm|contactfileupload|support.html|faq.html)
script: customer_service.app
- url: /stats.*
script: google.appengine.ext.appstats.ui.app
# All other URLs use main.app
- url: /.*
script: main.app
inbound_services:
- mail
builtins:
- remote_api: on
- deferred: on
#- appstats: on
error_handlers:
- file: default_error.html
libraries:
- name: webapp2
version: latest
- name: jinja2
version: latest
- name: setuptools
version: latest
- name: markupsafe
version: latest
- name: django
version: latest
- name: PIL
version: latest
- name: webob
version: latest
- name: lxml
version: latest
- name: ssl
version: latest
是的,你的app.yaml
文件是一个标准的环境文件(它没有vm:true
or env:flex
in it).
是的,可以在同一应用程序内混合和匹配不同语言和不同环境的服务/模块。您甚至可以切换语言和环境same模块在不同的version该模块的。这是因为模块提供了完整的代码隔离,请参阅服务隔离与项目隔离对比 https://cloud.google.com/appengine/docs/standard/python/microservices-on-app-engine#comparison_of_service_isolation_and_project_isolation。相关帖子:立即将 Java 和 Node.js 项目上传到 Google AppEngine https://stackoverflow.com/questions/42413211/upload-a-java-and-node-js-project-to-google-appengine-at-once/42418452#42418452
我总是尝试构建一个多服务/模块应用程序,其中每个服务都位于其自己的子目录中,如中所述就文件夹结构而言,Google App Engine 应用程序中的默认服务/模块可以是非默认服务/模块的同级吗? https://stackoverflow.com/questions/34110178/can-a-default-service-module-in-a-google-app-engine-app-be-a-sibling-of-a-non-de/34111170#34111170
所以首先我会创建一个default
您的应用程序目录的子目录并移动所有现有的default
将特定于模块的文件放入其中,但应用程序级配置除外,我将其保留在顶层并在default
dir 如该帖子中所述。然后我会验证default
模块仍然按预期工作。
然后,我会为需要添加的每个新模块创建一个新的子目录,并根据需要为其添加代码。
边注:如上面提到的帖子中所述通过符号链接共享代码适用于标准环境模块,但它可能不适用于灵活的模块,请参阅在 GAE 项目中的模块之间共享代码 https://stackoverflow.com/questions/42464203/sharing-code-between-modules-in-a-gae-project/42465117#42465117
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)