gpt4 book ai didi

java - "UNAVAILABLE"从android客户端到python服务器的gRPC失败

转载 作者:搜寻专家 更新时间:2023-11-01 09:35:15 27 4
gpt4 key购买 nike

当我尝试对在我的机器上(在同一网络上)运行的 python RPC 服务器进行 RPC 调用时,我一整天都在为 Android 上 gRPC 的以下问题而苦苦挣扎。

我的 android gRPC android 客户端编译并运行,但是,我在客户端上收到以下错误消息(并且在 python 服务器上保持静默):

io.grpc.StatusRuntimeException: UNAVAILABLE
Caused by: java.io.IOException: PROTOCOL_ERROR invalid settings id: -509

完整的堆栈跟踪如下:

05-06 18:39:01.133 5018-5302/com.example.android.cimi I/SyncAdapter: Failed... : 
io.grpc.StatusRuntimeException: UNAVAILABLE
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:227)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:208)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:141)
at com.example.android.cimi.CimiSyncerGrpc$CimiSyncerBlockingStub.getHouseholdTimestamps(CimiSyncerGrpc.java:209)
at com.example.android.cimi.SyncAdapter.onPerformSync(SyncAdapter.java:130)
at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:259)
Caused by: java.io.IOException: PROTOCOL_ERROR invalid settings id: -509
at io.grpc.okhttp.internal.framed.Http2.ioException(Http2.java:589)
at io.grpc.okhttp.internal.framed.Http2.access$200(Http2.java:47)
at io.grpc.okhttp.internal.framed.Http2$Reader.readSettings(Http2.java:304)
at io.grpc.okhttp.internal.framed.Http2$Reader.nextFrame(Http2.java:162)
at io.grpc.okhttp.OkHttpClientTransport$ClientFrameHandler.run(OkHttpClientTransport.java:868)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
05-06 18:39:01.139 5018-5018/com.example.android.cimi I/SyncService: Service destroyed

当关闭服务器时,我得到了一个不同的错误,所以肯定有其他事情发生了。

我正在使用以下版本: io.grpc:protoc-gen-grpc-java:1.3.0 com.google.protobuf:protoc:3.0.0

我尝试过的事情:

  1. 降级到 grpc 1.0.0
  2. 降级 Android studio
  3. 尝试过 python 2&3
  4. 可以从 python 客户端连接!

我还能如何调试它?有没有办法获得更有意义的异常?有没有办法让服务器更冗长?

如有任何帮助,我们将不胜感激!

最佳答案

通过确认调用在使用 Java 服务器时有效,我已将问题缩小为 python gRPC 服务器问题。

原来肯定是和最近的gRPC/protobuf python包有关(刚刚通过pip install安装的,肯定抓到了最新的):

以下用于降级 gRPC 安装的命令序列解决了该问题:

cd /usr/lib/python2.7/site-packages
rm -rf packaging*
rm -rf pyparsing*
pip2 install protobuf==3.0.0
pip2 install grpcio==1.0.0
pip2 install grpcio-tools==1.0.0

关于java - "UNAVAILABLE"从android客户端到python服务器的gRPC失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com