2

我已经成功部署了很多谷歌 gRPC 云端点。

但是第一次,我在我的原型中使用时间戳类型,当我尝试部署我的 gRPC API 时,我遇到了一个错误:

gcloud endpoints deploy services api_descriptor.pb api_config.yaml

ERROR: (gcloud.endpoints.services.deploy) INVALID_ARGUMENT: Cannot 
convert to service config.
'ERROR: google/protobuf/timestamp.proto:121:1: (at document line 76) 
Unexpected end tag '--)' with missing begin tag.'

我生成 api_descriptor.pb 的命令

protoc -I . backoffice*.proto \
--proto_path=. \
--include_imports \
--include_source_info \
--descriptor_set_out=api_descriptor.pb 

我的 api_config.yaml

type: google.api.Service
config_version: 3

name: backoffice.endpoints.MY_PROJECT.cloud.goog

title: Backoffice gRPC API
apis:
- name: package.BackofficeApi

usage:
  rules:
  - selector: "*"
    allow_unregistered_calls: true

我找不到关于这个问题的任何信息......有什么想法吗?

4

2 回答 2

2

timestamp.proto不幸的是,这是文件中的错误。

已被修复,但听起来你所拥有的 protobuf 版本还没有修复。

幸运的是,您可以在本地解决此问题 - 只需编辑timestamp.proto(无论您在哪里获得它;这取决于您使用的包)将--)第 121 行拆分--为第 121 行的末尾和)下一行,因为它是在当前文件中(上面链接)。

于 2018-04-05T15:06:56.823 回答
2

似乎这个问题存在于protobuf版本(3.5.0 - 3.5.2,截至 2018 年 5 月 9 日)中,并且尚未在任何版本中修复。我在以下位置找到了有问题的文件"<python path>\Lib\site-packages\grpc_tools\_proto\google\protobuf\timestamp.proto"

更换线路:

// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--)

// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime)

为我解决了问题

于 2018-05-08T22:39:15.323 回答