'Channel'对象在调用prediction_service_pb2_grpc时没有属性'unary_unary'错误。预测服务存根(通道)



我正在尝试为我的模型创建一个推理应用程序(语言分类(,并且我收到错误 Channel对象没有属性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'

我正在使用烧瓶来创建消耗模型的Web服务。

@app.route('/LangDet', methods=['POST'])
def do_inference():
    # get deployed model details
    token = get_access_token()
    model_name = request.path[1:]
    query_string = {"modelName": model_name}
    headers = {
        'Authorization': token
    }
    res = requests.get(deployment_url, headers=headers, params=query_string)
    model_info = json.loads(res.text)
    if int(model_info["count"]) < 1:
        return Response('404 Not Found: Model ' + model_name + ' is unavailable.', status=404)
    else:
        latest_version = [0, 0]
        for index, model in enumerate(model_info["modelServers"]):
            if int(model["specs"]["models"][0]["modelVersion"]) > latest_version[0]:
                latest_version = [int(model["specs"]["models"][0]["modelVersion"]), index]
        model_host = model_info["modelServers"][latest_version[1]]["endpoints"][0]
        credentials = implementations.ssl_channel_credentials(root_certificates=bytes(model_host["caCrt"], 'ascii'))
        channel = implementations.secure_channel(str(model_host["host"]), int(model_host["port"]), credentials)
        stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)

声明存根后,应用程序引发异常。这里似乎是一个问题,我该怎么办才能解决?

看来原始海报弄清楚了,对于任何遇到此问题的人来说,这是解决方案。

而不是:

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

使用:

channel = grpc.insecure_channel(server) 

请注意,尽管Beta实现分别接受主机和端口,但第二种方法将它们作为单个参数接受。例如,

insecure_channel(0.0.0.0, 9999)

变成

insecure_channel(0.0.0.0:9999)

相关内容

最新更新