问题描述
我是grpc菜鸟,想创建一个REST端点来对grpc服务器进行健康检查。为此,我决定使用grpc网关。
但是,文档中针对grpc-REST网关(用于将grpc代理到json)的example仅针对Golang。但是我有一个python后端,并且想使用Google Cloud Endpoints制作一个可以transcode incoming REST requests的基于gRPC的api。
我确实在此stackoverflow answer中找到了手动生成注释的方法。但是我想知道什么是最好的方法。这是我想生成为类的示例.proto文件。
Syntax = "proto3";
package example;
+
+import "google/api/annotations.proto";
+
message StringMessage {
string value = 1;
}
service YourService {
- rpc Echo(StringMessage) returns (StringMessage) {}
+ rpc Echo(StringMessage) returns (StringMessage) {
+ option (google.api.http) = {
+ post: "/v1/example/echo"
+ body: "*"
+ };
+ }
}
如何使用python后端生成.proto文件并创建grpc-gateway?
解决方法
grpc-gateway
是一个生成反向代理的项目,该反向代理将传入的JSON请求转换为gRPC。为此,它将生成Go代码,然后将其编译为反向代理二进制文件。然后,您可以将反向代理二进制文件 alongside 部署到所需的后端,在您的情况下,该后端将用Python编写。反向代理的编写语言与后端的编写语言无关。
要生成原型,请查看我们的quick start guide for gRPC Python。 grpc-gateway项目还有一个不错的tutorial,用于设置网关进程。