如何为Python运行grpc-gateway

问题描述

我是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,用于设置网关进程。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...