问题标签 [grpc-python]
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 - 跟踪 grpc 服务器上的多个客户端
我正在尝试创建一个grpc
可以跟踪所有连接的客户端的 python 服务器。
我指的是 Ray Tsang 所做的一个谈话/演示,他保存了一个集合StreamObservers
并只是迭代它们以发送给所有客户。这是一个视频供参考。
现在我的问题是你如何StreamObserver
在 python 中得到一个?我只看到self
,request
并且context
在定义中对我可用。
这是我的第一个 python 项目,所以我可能在这里遗漏了一些明显的东西。
这是我的原型,它基本上是示例原型
python - Python grpcio 最佳编程实践
有一个话题在谈论最佳实践
https://github.com/grpc/grpc-go/issues/682
但我最后不确定,如何在我的程序中使用 grpcio。
我正在使用基于 GRPC 的 tensorflow-serving。我的客户端基于 python sdk grpcio-1.8.3。客户端程序是一个具有许多 API 的 Flask 服务器,每个 API 都拥有相同的通道和存根。
当 tensorflow-serving(GRPC 服务器)重新启动时,客户端程序将失败为“Endpoint read failed”并且不再恢复。
但是当我将 grpcio 升级到较新版本时,该错误似乎已修复,因此客户端可以自动重新连接。
如果 grpcio 客户端,即 Flask 服务器全局拥有一个通道和存根,则该错误似乎永远不会出现。
但是我仍然不确定使用 grpcio 之类的 grpc 客户端 SDK 进行编程的最佳方式是什么,稳定且高性能。因为这些示例甚至都没有异常测试,更不用说如何在一个进程中使用多个通道和存根。
python - 如何在安全的 Nginx 上修复“从上游读取响应标头时上游过早关闭的连接”
我配置我的 nginx:
我想为 SSL grpc 服务器配置安全的 nginx L7 负载平衡。在非安全 grpc 服务器上,非安全 nginx 运行良好。但是在安全时我得到了一个错误:
我试图找到解决此问题的方法,但没有适合我的方法。
java - grpc 异步双向服务器(Java/Python)
这是我的场景。grpc 服务器是一个从其他源订阅数据的异步服务器。它还向其客户端提供了订阅功能,因此一旦从其他来源接收到数据,它就可以将数据推送到 grpc 客户端。服务器是用 Java 实现的。
我想使用 python 来实现一个 grpc 客户端来订阅这个服务器。但是,一旦python订阅数据就显得很奇怪,它立即关闭而不等待Java服务器的异步返回。但是,Java 客户端可以永远运行并等待来自服务器的异步数据。
原型
Python 客户端代码(不工作)
Java 代码(工作)
我一直很困惑。如何在 python 客户端中实现相同的功能?谢谢~
ps 如果服务器是非异步服务器的while True 服务器,则python 客户端工作。我怀疑python客户端不知道“异步”服务器,一旦它的流没有新数据,它就会关闭连接。
protocol-buffers - grpc 错误 ...找不到记录器“grpc._common”的处理程序
我刚刚掌握了 grpc 并尝试构建一个自定义客户端-服务器过程,其中客户端发送一个 id 和一个与 id 对应的名称。
这是 custom.proto 文件:
从此原型文件 custom_pb2 和 custom_pb2_grpc.py 生成。
这是 custom_db.json
这是 custom_resources.py
这是 custom_server.py
这是 custom_client.py
我得到的确切错误消息是:
谢谢您的帮助。
python - 从 GRPC Python 服务器发回文件流
我有一项服务需要将文件流返回给调用客户端,所以我创建了这个 proto 文件。
当服务器接收到这个时,它需要读取一些 source.txt 文件,然后将其作为字节流写回客户端。只是想问一下这是在 Python GRPC 服务器中执行此操作的正确方法吗?
我找不到与此相关的任何示例。
protocol-buffers - 从 pubref/rules_protobuf 在 py_proto_compile 中使用导入失败:_pb2.py 和 pb2_grpc.py 未创建
我们有 3 个相互依赖的 proto 文件,它们位于//protocol/proto
包中。基本上:
在里面A.proto
,我们声明了,imports B.proto
和,没有文件名imports C.proto
的前缀。protocol/path
对于 Java 代码编译(in //protocol/BUILD
),我们使用imports
如下,并且该规则完美运行。
但是,当我尝试对 Python 代码编译(也在 中//protocol/BUILD
)执行相同操作时,它不起作用:
bazel build //protocol:client-python-proto
返回以下错误:
导入导入的 proto 文件的完整路径(例如import protocol/proto/A.proto
)可以解决这个问题,但对我们来说重要的是我们不添加完整路径作为前缀。因此,我们试图使imports
论点起作用。
您知道可能是什么原因以及我们如何解决这个问题吗?
python - 如何在 gRPC python 中定义全局错误处理程序
我试图捕获任何服务程序中引发的任何异常,因此我可以确保我只传播已知异常而不是像 ValueError、TypeError 等意外的异常。
我希望能够捕获任何引发的错误,并将它们格式化或将它们转换为其他错误,以更好地控制暴露的信息。
我不想用 try/except 封装每个服务方法。
我尝试过使用拦截器,但我无法捕捉到那里的错误。
有没有办法为 grpc 服务器指定错误处理程序?就像你对烧瓶或任何其他 http 服务器所做的那样?
python-3.x - python3 - 装饰器函数:赋值前引用的变量
我正在开发一个gRPC微服务。
因为每个方法都必须request
首先从参数中加载一个 JSON 字符串——然后最后再次转储它,我想在类的方法上使用装饰器,以便方法本身除了return
只包含... more stuff to do ...
以下内容:
所以我写了一个装饰器函数。但是,我找不到此错误的解决方案:
请求 = json.loads(request.context)
UnboundLocalError:分配前引用的局部变量“请求”
错误是由此产生的:(仅作为示例,真实的东西要复杂一些)
我尝试request = json.loads(args[1].context)
改用。但后来我得到这个错误:
if request["source_machine"] 和 request["dest_machine"]: TypeError:
“JsonContextRequest”对象不可下标
作为request
参数给出的输入是类型的对象。<class 'SetupService_pb2.JsonContextRequest'>
请求中的 JSON 字符串可以通过request.context
属性访问。
我认为问题与如何调用装饰器函数有关。我想如果它是在类方法的运行时调用的,那么变量 request 应该已经被分配了 request 对象。
但也许我在这里完全错了。那么你将如何解决这个问题?
python - 以 (StatusCode.UNAVAILABLE, Socket closed)> 终止的 RPC 集合
- 张量流GPU 1.10.0
- 张量流服务器 1.10.0
我已经部署了一个服务于多个模型的 tensorflow 服务器。客户端代码是这样client.py
的,我调用了预测函数。
我有大约 100 个具有相同配置的客户端。这是调用该predict
函数的示例代码:
起初,当我运行客户端代码时,我可以正确收到响应。但几个小时后,客户端因错误而崩溃
我尝试将我的客户端代码修改为
这意味着每次predict
调用该函数时,我都会尝试与 tfs 服务器建立连接。但是这段代码也像以前一样失败了。
那么我应该如何处理这种情况呢?