如何将我的 app.yaml 迁移到 2.7?

Posted

技术标签:

【中文标题】如何将我的 app.yaml 迁移到 2.7?【英文标题】:How to migrate my app.yaml to 2.7? 【发布时间】:2011-12-18 06:07:22 【问题描述】:

我正在将我的 gae 应用程序迁移到 python 2.7。这是我的新 app.yaml:

application: webfaze
version: main
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /mapreduce(/.*)?
  script: mapreduce/main.application

- url: /(.*\.(html|css|js|gif|jpg|png|ico|swf))
  static_files: static/\1
  upload: static/.*
  expiration: "1d"

- url: .*
  script: main.application

- url: /task/.*
  script: main.application
  login: admin

但我收到此错误消息:

Error parsing yaml file:
Invalid object:
threadsafe cannot be enabled with CGI handler: mapreduce/main.application
  in "webfaze/app.yaml", line 22, column 1

你能告诉我如何解决这个错误吗?

【问题讨论】:

【参考方案1】:

检查source code,看来您需要定义处理程序的路径而不使用任何斜线:

   if (handler.script and (handler.script.endswith('.py') or 
       '/' in handler.script)):
       raise appinfo_errors.ThreadsafeWithCgiHandler(
                    'threadsafe cannot be enabled with CGI handler: %s' %
                    handler.script)

application.py 移动到项目的根目录并相应地修改处理程序的路径。

【讨论】:

谢谢,我可以省略 mapreduce 部分,因为我目前没有使用它。现在更新通过了语法检查,我很想知道我刚刚运行 set_default_version 后发生了什么 或将其命名为mapreduce.main.application 感谢@Nick Johnson 提供完整的解决方案。我可以毫不费力地将整个应用程序迁移到 python 2.7 :-) 我在网上搜索后仍然无法命名mapreduce.main.application,我发现脚本:google.appengine.ext.mapreduce.main.APP来自:groups.google.com/forum/?fromgroups#!topic/google-appengine/…【参考方案2】:

更改:

- url: /mapreduce(/.*)?
  script: mapreduce/main.application

收件人:

- url: /mapreduce(/.*)?
  script: mapreduce.main.application

如果“mapreduce”文件夹不存在,您可能还需要添加一个 __init__.py。这将使 python 将文件夹解释为一个模块。

【讨论】:

我尝试了最新版本,它似乎从应用程序更改为APP @wonglik 通过“最新版本”将是哪个版本。我正在运行 SDK 的 v.1.7.0 并将“应用程序”更改为“应用程序”会引发 500(服务器)错误。 对不起。我的意思是最新版本的 MapReduce Bundle - 1.6.2 取自这里developers.google.com/appengine/downloads @wonglik 也许一旦更新到最新版本,它就会改变以匹配其他版本。根据developers.google.com/appengine/docs/python/dataprocessing/…,MapReduce Bundle 仍被认为是实验性的。 我发现你也必须对 mapreduce/include.yaml 进行类似的更改

以上是关于如何将我的 app.yaml 迁移到 2.7?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的应用程序从 IOS 13 迁移到 IOS 14?

定期网站解析消耗大量数据下载。我应该将我的逻辑迁移到服务器吗?如何?

我需要在短时间内学习 vuex,因为我不知道如何将我的 vue js 迁移到 vuex?

Google App Engine 上的错误 Python 2.7 - 无法使用 CGI 处理程序启用线程安全

如何从 SQLite 迁移到 PostgreSQL (Rails)

我应该如何编写我的 Google App Engine app.yaml 文件?