python-调用ice服务

python编写ice服务客户端

参照文档:https://blog.csdn.net/qq_37556007/article/details/80844248

1 安装zeroc-ice

直接使用pip命令安装:pip install zeroc-ice,安装的是最新版本

2 pycharm引入ice

文件-设置,project interpreter中添加zeroc-ice package

python-调用ice服务_第1张图片

python-调用ice服务_第2张图片

3 编译slice文件,slice2py ae.ice,生成AE文件夹(ae.ice文件中的模块名称)和ae_ice.py

python-调用ice服务_第3张图片

4 编写客户端代码

import sys,Ice,AE

with Ice.initialize(sys.argv) as communicator:
    base = communicator.stringToProxy("%s:default -h %s -p %s"%(servicename,ip,port))
    # print type(base)
    printer = AE.AnalysisEnginePrx.checkedCast(base)
    if not printer:
        raise RuntimeError("Invalid proxy")
    else:
        start=time.time()
        res=printer.analysis1(imgname,data,"")
        end=time.time()
        spendtime=end-start
        print '********************spend time is %s**************************'%(spendtime)                  
        returnjson = res.json
        print returnjson

调用Ice.initialize初始化Ice run time

获取远程服务的代理。在communicator上调用stringToProxy创建一个代理,带参数分别为对象标识符、ip和端口

stringToProxy返回的代理类型是Ice::ObjectPrx,是接口和类的继承树上的根节点。要调用

AE.AnalysisEnginePrx.checkedCast(base)向下转换,这个checked方法会发送一条消息给服务器:如果是,这个调用会返回一个AE.AnalysisEnginePrx类型的代理,否则,如果代理表示是其他的类型,这个调用会返回None

5 接下来就可以调用ice中的方法了

你可能感兴趣的:(python)