问题标签 [grpc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
12746 浏览

python - Python grpc protobuf 存根生成问题:--grpc_out: protoc-gen-grpc: Plugin failed with status code 1

正如问题所说,我从源代码编译了 grpc 并且也做了sudo pip install grpcio,但是,which grpc_python_plugin它没有返回任何东西。这是一个问题,因为 route_guide 的 grpc python 示例需要我运行protoc -I . --python_out=. --grpc_out=. --plugin=protoc-gen-grpc='which grpc_python_plugin' ./route_guide.proto 才能生成 python 存根。因为,which grpc_python_plugin不返回任何东西,我收到以下错误:

如果我将尝试运行的命令缩短为: protoc -I . --python_out=. ./route_guide.proto,它会生成 route_guide_pb2.py 文件,但没有 Servicer 和 Stub 类,以及 server 和 stub 方法。Ofc,如果想将 grpc 用于任何目的,这些方法是必要的。任何帮助,将不胜感激。

0 投票
8 回答
21042 浏览

go - golang protobuf 从生成的 json 标签中删除 omitempty 标签

我正在使用带有 json 代理的 google grpc。出于某种原因,我需要omitempty从 *.pb.go 文件中生成的结构中删除标签。

如果我有这样的原始消息

生成的结构看起来像这样

但我需要omitempty从生成的结构中删除标签。我怎样才能做到这一点?

0 投票
2 回答
4892 浏览

java - Protobuf 对象作为 Maps 中的键

我们可以使用 protobuf 类(从 protobuf 编译器生成的对象)作为 HashMaps 中的键。

hashCode() 如何在 protobuf 类上实现。hashcode() 方法是否足以在大多数情况下避免冲突。

0 投票
1 回答
2195 浏览

c++ - 在 VisualStudio 2013 下构建的 Google gRPC (C++)。链接错误

我正在尝试在 Visual Studio 中为我的项目设置 gRPC。做了这里描述的一切:http: //www.infopulse.com/blog/grpc-framework-by-google-tutorial/。(尝试编译 helloworld 示例 -> Git grpc/examples/cpp/helloworld)

我在编译时遇到的主要问题:

未解析的外部符号“void _cdecl grcp::FillMetadata
... 等等。

protobuf(一切正常)OpenSSL、zlib 没有问题 - 好的。

我的包括:

  • $(解决方案目录)..
  • $(解决方案目录)..\包括
  • $(SolutionDir)..\third_party\protobuf\src
  • $(SolutionDir)\packages\grpc.dependencies.zlib.1.2.8.10\build\native\include
  • $(SolutionDir)\packages\grpc.dependencies.openssl.1.0.204.1\build\native\include
  • $(SolutionDir)\packages\gflags.2.1.2.1\build\native\include
  • $(SolutionDir)\packages\gtest.1.7.0.1\build\native\include

附加依赖项:

  • libprotobuf.lib
  • grpc.lib
  • gpr.lib
  • libeay32MDd.lib
  • ssleay32MDd.lib

一切都在正确的文件夹中。

我在这里想念什么?也许你们中的一些人已经有一个.sln包含所有依赖项列表的工作项目?我知道问题一定与.lib我在这里遗漏的一些问题有关。

0 投票
1 回答
3659 浏览

java - GRPC Java 将数据从服务器拦截器传递到 rpc 服务调用

我们将 Java GRPC 用于我们的内部服务之一,并且我们有一个服务器端拦截器,我们使用它来从标头中获取信息并将它们设置在内部使用 ThreadLocal 的日志记录上下文中。

所以在我们的拦截器中,我们做了类似的事情:

然后在我们的服务调用中,我们像这样访问它:

但是,当前上下文有时为空。

然后我们尝试使用 GRPC Context 类,如下所示:

然后在服务调用中访问它,例如:

然而,这有时也是空的,如果我打印出内存地址,无论我是否附加在拦截器中,上下文的早期似乎总是 ROOT 上下文,但是在几次调用之后,上下文是正确的并且记录器数据在那里它应该。

因此,如果有人有任何想法或更好的方法将数据从拦截器传播到服务调用,我很想听听。

0 投票
2 回答
41259 浏览

protocol-buffers - gRPC + 图片上传

我想创建一个简单的gRPC端点,用户可以上传他/她的图片。协议缓冲区声明如下:

不管 gRPC 文档中的警告如何,这种上传图片(和接收图片)的方法仍然可以吗?

如果不是,那么使用标准格式上传图片并存储图像文件位置是否是更好的方法(标准)?

0 投票
8 回答
42021 浏览

javascript - 如何将 gRPC 定义的 API 引入 Web 浏览器

我们想为我们的 gRPC 微服务构建一个 Javascript/HTML gui。由于浏览器端不支持 gRPC,我们想到了使用 web-sockets 连接到 node.js 服务器,该服务器通过 grpc 调用目标服务。我们很难找到一个优雅的解决方案来做到这一点。特别是,因为我们使用 gRPC 流在我们的微服务之间推送事件。看来我们需要第二个 RPC 系统,只是为了前端和 node.js 服务器之间的通信。这似乎是很多开销和必须维护的额外代码。

有没有人有做这样的事情的经验或者知道如何解决这个问题?

0 投票
2 回答
509 浏览

c++ - 为什么我在我的 C++ 应用程序中从 Bigtable 中脱离出来?

我正在使用 gRPC Bigtable 客户端运行用 C++ 编写的数据导入作业。经过一段时间并插入超过 100 万条记录后,我收到goawaymax_age消息。这是我的第一个一般性和第一个长时间运行的 Bigtable 应用程序,所以我不确定这goaway是否特定于插入的数量或连接持续时间,或者它到底是什么goaway。似乎我遇到了某种超时。查看 gRPC C++ 代码,特别是 grpc::Channel,我没有看到任何超时控制,所以我不知道如何处理这个问题,除了重新打开数据库连接。

我从 gRPC 客户端收到的确切错误消息如下所示:

gRPC 和 protobuf 是从源代码构建的,从 16 年 1 月 22 日左右的主线开始,所以客户端代码是最近的。

关于为什么 Bigtable 会发送的任何建议goaway?与Bigtable交谈时是否可以打开一个grpc::Channel不超时的?

0 投票
1 回答
872 浏览

python - 将 gRPC python 服务器与 ruby​​ 客户端一起使用的问题

gRPC 似乎在这样的配置中不起作用。最小的不工作示例:

Protobuf 规范:

生成存根

服务器(遵循 helloworld 示例)

Python客户端(工作正常)

Ruby 客户端(似乎忽略了服务器)

Python 客户端按预期输出“得到测试”。Ruby 客户端异常死亡

版本:gem list输出google-protobuf (3.0.0.alpha.3)grpc (0.12.0) pip list输出protobuf (3.0.0a3)grpcio (0.12.0b0)

0 投票
4 回答
13168 浏览

c# - 应该如何托管 GRPC 服务?

我使用Link中给出的示例在 C# 中创建了一个 GRPC 服务器。现在我想弄清楚我应该如何托管这个服务器,以便实现以下目标:

  • 我应该将此服务器设为控制台应用程序还是 Windows 服务。如果我将其设为 Windows 服务,那么更新服务将会很麻烦(这是一个很大的负面影响),如果我将其设为控制台应用程序,那么更新将只需要关闭 exe。但这伴随着错误地关闭相同的价格。还有其他更好的方法吗?
  • 有了 IIS,这个问题就不会出现,因为我可以简单地从 LB 中删除该站点并停止该网站以执行更新,但由于 GRPC 不会成为 IIS 的一部分,我不确定如何才能使其正常工作。

欢迎任何关于更好架构的参考。