Python 3.x ';频道';对象没有属性';一元';调用预测服务时出错\u pb2\u grpc.PredictionServiceStub(通道)

Python 3.x ';频道';对象没有属性';一元';调用预测服务时出错\u pb2\u grpc.PredictionServiceStub(通道),python-3.x,tensorflow,flask,tensorflow-serving,grpc-python,Python 3.x,Tensorflow,Flask,Tensorflow Serving,Grpc Python,我正在尝试为我的模型(语言分类)创建一个推理应用程序,但我得到一个错误通道对象没有属性unary\unary。我在任何地方都找不到关于这个问题的任何信息,因此这篇文章。我对python和tensorflow领域相当陌生,我还在学习。 错误日志如下所示(最后几行) 2019-07-30T12:34:12.24+0200 [APP/PROC/WEB/0] ERR File "app.py", line 189, in do_inference 2019-07-30T12:34:12.24+

我正在尝试为我的模型(语言分类)创建一个推理应用程序,但我得到一个错误
通道
对象没有属性
unary\unary
。我在任何地方都找不到关于这个问题的任何信息,因此这篇文章。我对python和tensorflow领域相当陌生,我还在学习。 错误日志如下所示(最后几行)

2019-07-30T12:34:12.24+0200 [APP/PROC/WEB/0] ERR   File "app.py", line 189, in do_inference
   2019-07-30T12:34:12.24+0200 [APP/PROC/WEB/0] ERR     stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
   2019-07-30T12:34:12.24+0200 [APP/PROC/WEB/0] ERR   File "/home/vcap/deps/0/python/lib/python3.6/site-packages/tensorflow_serving/apis/prediction_service_pb2_grpc.py", line 40, in __init__
   2019-07-30T12:34:12.24+0200 [APP/PROC/WEB/0] ERR     self.Classify = channel.unary_unary(
   2019-07-30T12:34:12.24+0200 [APP/PROC/WEB/0] ERR AttributeError: 'Channel' object has no attribute 'unary_unary'
我使用flask创建使用该模型的web服务

@app.route('/LangDet',methods=['POST'])
def do_推理():
#获取部署的模型详细信息
令牌=获取\访问\令牌()
model_name=request.path[1:]
查询_字符串={“modelName”:model_name}
标题={
“授权”:令牌
}
res=requests.get(部署\u url,headers=headers,params=query\u字符串)
model_info=json.loads(res.text)
如果int(型号信息[“计数])<1:
返回响应('404未找到:模型'+Model_name+'不可用',状态=404)
其他:
最新版本=[0,0]
对于索引,枚举中的模型(模型信息[“模型服务器]):
如果int(model[“specs”][“models”][0][“modelVersion”])>最新版本[0]:
最新版本=[int(型号[“规格”][“型号”][0][“型号版本”]),索引]
model_host=model_info[“modelServers”][最新版本[1][“端点”][0]
凭据=实现。ssl\通道\凭据(根\证书=字节(型号\主机[“caCrt”],“ascii”))
通道=实现。安全通道(str(model_host[“host”])、int(model_host[“port”])、凭据)
存根=预测\服务\ pb2\ grpc.预测服务存根(通道)

声明存根后,应用程序抛出异常。这里出现了什么问题?我能做些什么来解决它?

虽然原始海报似乎已经解决了这个问题,但对于其他遇到这个问题的人来说,这里是解决方案

而不是:

channel = grpc.beta.implementations.insecure_channel(host, int(port))
使用:

请注意,虽然beta实现分别接受主机和端口,但第二个方法将它们作为单个参数一起接受。那么比如说,

insecure_channel(0.0.0.0, 9999)
变成

insecure_channel(0.0.0.0:9999)

你能提供更多关于你安装的软件包的信息吗?
pip freeze
的输出会很有帮助。如果你能在第49行之前在
/home/vcap/deps/0/python/lib/python3.6/site packages/tensorflow\u service/api/prediction\u service\u pb2\u grpc.py>中打印出
channel
dir(channel)
,那也会非常有帮助。我已经解决了这个问题。问题是,我没有使用grpc创建通道,而是使用grpc.beta实现,它没有这样的参数。
insecure_channel(0.0.0.0:9999)