问题标签 [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.
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 用于任何目的,这些方法是必要的。任何帮助,将不胜感激。
go - golang protobuf 从生成的 json 标签中删除 omitempty 标签
我正在使用带有 json 代理的 google grpc。出于某种原因,我需要omitempty
从 *.pb.go 文件中生成的结构中删除标签。
如果我有这样的原始消息
生成的结构看起来像这样
但我需要omitempty
从生成的结构中删除标签。我怎样才能做到这一点?
java - Protobuf 对象作为 Maps 中的键
我们可以使用 protobuf 类(从 protobuf 编译器生成的对象)作为 HashMaps 中的键。
hashCode() 如何在 protobuf 类上实现。hashcode() 方法是否足以在大多数情况下避免冲突。
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
我在这里遗漏的一些问题有关。
java - GRPC Java 将数据从服务器拦截器传递到 rpc 服务调用
我们将 Java GRPC 用于我们的内部服务之一,并且我们有一个服务器端拦截器,我们使用它来从标头中获取信息并将它们设置在内部使用 ThreadLocal 的日志记录上下文中。
所以在我们的拦截器中,我们做了类似的事情:
然后在我们的服务调用中,我们像这样访问它:
但是,当前上下文有时为空。
然后我们尝试使用 GRPC Context 类,如下所示:
然后在服务调用中访问它,例如:
然而,这有时也是空的,如果我打印出内存地址,无论我是否附加在拦截器中,上下文的早期似乎总是 ROOT 上下文,但是在几次调用之后,上下文是正确的并且记录器数据在那里它应该。
因此,如果有人有任何想法或更好的方法将数据从拦截器传播到服务调用,我很想听听。
protocol-buffers - gRPC + 图片上传
我想创建一个简单的gRPC
端点,用户可以上传他/她的图片。协议缓冲区声明如下:
不管 gRPC 文档中的警告如何,这种上传图片(和接收图片)的方法仍然可以吗?
如果不是,那么使用标准格式上传图片并存储图像文件位置是否是更好的方法(标准)?
javascript - 如何将 gRPC 定义的 API 引入 Web 浏览器
我们想为我们的 gRPC 微服务构建一个 Javascript/HTML gui。由于浏览器端不支持 gRPC,我们想到了使用 web-sockets 连接到 node.js 服务器,该服务器通过 grpc 调用目标服务。我们很难找到一个优雅的解决方案来做到这一点。特别是,因为我们使用 gRPC 流在我们的微服务之间推送事件。看来我们需要第二个 RPC 系统,只是为了前端和 node.js 服务器之间的通信。这似乎是很多开销和必须维护的额外代码。
有没有人有做这样的事情的经验或者知道如何解决这个问题?
c++ - 为什么我在我的 C++ 应用程序中从 Bigtable 中脱离出来?
我正在使用 gRPC Bigtable 客户端运行用 C++ 编写的数据导入作业。经过一段时间并插入超过 100 万条记录后,我收到goaway
了max_age
消息。这是我的第一个一般性和第一个长时间运行的 Bigtable 应用程序,所以我不确定这goaway
是否特定于插入的数量或连接持续时间,或者它到底是什么goaway
。似乎我遇到了某种超时。查看 gRPC C++ 代码,特别是 grpc::Channel,我没有看到任何超时控制,所以我不知道如何处理这个问题,除了重新打开数据库连接。
我从 gRPC 客户端收到的确切错误消息如下所示:
gRPC 和 protobuf 是从源代码构建的,从 16 年 1 月 22 日左右的主线开始,所以客户端代码是最近的。
关于为什么 Bigtable 会发送的任何建议goaway
?与Bigtable交谈时是否可以打开一个grpc::Channel
不超时的?
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)
c# - 应该如何托管 GRPC 服务?
我使用Link中给出的示例在 C# 中创建了一个 GRPC 服务器。现在我想弄清楚我应该如何托管这个服务器,以便实现以下目标:
- 我应该将此服务器设为控制台应用程序还是 Windows 服务。如果我将其设为 Windows 服务,那么更新服务将会很麻烦(这是一个很大的负面影响),如果我将其设为控制台应用程序,那么更新将只需要关闭 exe。但这伴随着错误地关闭相同的价格。还有其他更好的方法吗?
- 有了 IIS,这个问题就不会出现,因为我可以简单地从 LB 中删除该站点并停止该网站以执行更新,但由于 GRPC 不会成为 IIS 的一部分,我不确定如何才能使其正常工作。
欢迎任何关于更好架构的参考。