如何解决GAE中的“意外属性'dispatch'”错误,类型为AppInfoExternal的对象。

4 投票
6 回答
7647 浏览
提问于 2025-04-18 11:46

请告诉我如何将我的项目部署到GAE(Google App Engine)。

我无法部署我的项目,因为出现了以下错误。

%appcfg.py update app.yaml dispatch.yaml worker.yaml
(omissions)
appcfg.py: error: Error parsing ./dispatch.yaml: Unexpected attribute 'dispatch' for object of type AppInfoExternal.
in "./dispatch.yaml", line 4, column 1.

这个项目在直接的项目文件夹里有以下yaml文件。

app.yaml

dispatch.yaml

worker.yaml

下面是dispatch.yaml的内容。

application: my-app

dispatch:
- url: "*/worker/*"
  module: worker

下面是worker.yaml的内容。

application: my-app
module: worker
api_version: 1
threadsafe: false
version: uno
runtime: python27
instance_class: B1
manual_scaling:
    instances: 1
handlers:
- url: /_ah/start
    script: my-worker.app

6 个回答

1

我刚遇到了一个一样的错误信息,最后我发现谷歌要求调度文件的名字必须叫做 dispatch.yaml

我之前的文件名是 web.dispatch.yaml,谷歌对此不太满意。把我的文件重命名为 dispatch.yaml 后,问题就解决了。

1

在更新 appcfg.py 时,包含的模块必须放在 dispatch.yaml 之前,所以正确的命令是:

appcfg.py update app.yaml worker.yaml dispatch.yaml
1

首先,dispatch.yaml 似乎不能作为 appcfg.py update 的参数。错误信息应该会提示这一点。

你可以试试:

appcfg.py update app.yaml worker.yaml

另外,dispatch.yaml 不是一个 应用配置,而是 调度文件。所以你可能不能写除了 dispatch 以外的其他属性。

1

缩进不对。应该是:

application: my-app

dispatch:
  - url: "*/worker/*"
    module: worker
2

另外,确保你运行 appcfg.py update_dispatch 这个命令,它和 update 是两个不同的命令。

撰写回答