在Python mylibrary.py中,我使用协议缓冲器对数据进行建模,方法如下:
我想实现应用程序引擎上的云终结点框架那个imports并使用前面提到的imports脚本,但是Cloud使用的是ProtoRPC,而不是“标准”协议缓冲器。
我的deserialization模块main.py从protorpc导入,而不是使用“脱机”protoc编译器生成序列化和反序列化代码:
from protorpc import messages
from protorpc import remote消息是而不是使用.proto文件定义的。相反,定义了类,从protorpc.messages.Message继承
class MyMessageDefinition(messages.Message)Proto缓冲区可以转换为Proto RPC等价物吗?我真的不想将mylibrary.py更改为使用ProtoRPC,因为它不像协议缓冲器那么通用。
发布于 2017-10-12 14:19:30
经过八个月的试验和大量的试验,我会补充我的意见。我希望这能节省一些时间。
首先选择框架,
Google有不同的云终结点服务。所有这些都可以用于JSON/REST。这对我来说还不是很清楚。云端点是一个非常高级的短语,涵盖多 Google后端上API的开发、部署和管理。
这里的要点是,在决定使用Cloud之后,您仍然必须决定后端技术以服务于您的API。文档感觉有点隐藏,但我强烈建议从谷歌云终结点文档开始。
您可以在以下两种情况中进行选择:
选择您的实现第二个
在每个API框架中,都可以选择您的API (服务)可以在其上运行的云实现:
OpenAPI规范 -对于JSON/REST API,实现于:
端点框架 -对于JSON/REST API,实现于:
gRPC - gRPC API实现于:
在这里发布问题时,我使用的是运行在Google标准环境中的端点框架。然后,我在上将API (服务)迁移到gRPC。
您可能会注意到,OpenAPI规范和端点框架都可以用于JSON/REST API,而gRPC只公开gRPC API。那么,我如何将REST从端点框架移植到gRPC呢?答案是将HTTP/JSON转换为gRPC (这是我一路上学到的,对我来说还不清楚)。所以,不要仅仅因为您想要REST/HTTP就排除gRPC。
答案
那么这与我最初的问题有什么关系呢?
我试图在.proto文件和gRPC注释之间进行转换,这意味着我在这条路上走错了路。
如果要使用普通.proto文件编写应用程序,请在Compute上选择gRPC。如果您需要这是一个REST,这是可以做到的,但是您需要在后端配置中添加一个特别是。它基本上是一个作为反向代理的尼克斯服务器设置。这里唯一的缺点是您需要一些Docker知识来确保ESP (代理)和您的gRPC服务器可以通信(Docker网络)。
如果您的代码已经在App上,并且希望以最小的工作量将其公开为REST,并且仍然具有良好的API管理特性,则选择端点框架。警告:我离开这里是因为它太贵了(我每月收到100美元左右的账单)。
如果您想完全避免.protos,那么就使用OpenAPI规范。
最后,如果您想提供编程集成、客户端库,或者想提供一个微服务,那么确实要考虑gRPC。很容易删除ESP (代理)并在几乎任何一台机器上运行gRPC服务器(只要安装了协议缓冲运行时就行)。
最后,我决定在gRPC上使用Docker的计算引擎。我还有一个ESP来提供到gRPC的HTTP转码,反之亦然。我喜欢这种做法有几个原因:
避免这些错误
发布于 2017-10-11 19:37:31
我发现了一个名为pyprotobuf (http://pyprotobuf.readthedocs.io)的项目,它可以从proto文件开始生成一个带有protorpc类的模块。
根据文档(http://pyprotobuf.readthedocs.io/topics/languages/protorpc.html),您需要执行:
原型-格式python example.proto
https://stackoverflow.com/questions/43019917
复制相似问题