12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import logging as Log
- import grpc,argparse,time,sys,threading
- import mllp_grpc.sim_mt_pb2_grpc as sim_mt_pb2_grpc
- import mllp_grpc.sim_mt_pb2 as sim_mt_pb2
- import mllp_grpc.sim_mt_common_pb2 as sim_mt_common_pb2
- import google.protobuf.empty_pb2 as empty_pb2
- def get_data(args,sys_id):
- Log.info("Loading '%s'"%args.txt)
- Log.info('Sending data')
- yield sim_mt_pb2.TranslateRequest(system_id=sys_id)
- with open(args.txt) as f:
- for l in f:
- l= l.strip().split()
- if l==[]: continue
- for w in l:
- data= sim_mt_common_pb2.TextPackage(words_novar=[w],
- words_var=[],
- eos=False)
- o= sim_mt_pb2.TranslateRequest(text=data)
- yield o
- data= sim_mt_common_pb2.TextPackage(words_novar=[],
- words_var=[],
- eos=True)
- o= sim_mt_pb2.TranslateRequest(text=data)
- yield o
- Log.info('Transmission completed')
-
- def parse_cmdline():
- p= argparse.ArgumentParser(description='Simultaneous MT GRPC client')
- p.add_argument('host',type=str,help='server host')
- p.add_argument('port',type=int,help='server port')
- p.add_argument('txt',type=str,help='input text file')
- args= p.parse_args()
- return args
- def run(args):
- addr= '%s:%d'%(args.host,args.port)
- with grpc.insecure_channel(addr) as channel:
- stub= sim_mt_pb2_grpc.SimMTStub(channel)
- for info in stub.GetSystemsInfo(empty_pb2.Empty()):
- print(info)
- print_host= True
- for o in stub.Translate(get_data(args,0)):
- if print_host:
- print_host= False
- print(o.host_info)
- if o.status.code!=sim_mt_common_pb2.TranslateResponse.Status.Code.OK:
- print(o)
- else:
- for w in o.words_novar:
- sys.stdout.write(w+' ')
- if o.eos: sys.stdout.write('\n')
- sys.stdout.flush()
-
- if __name__=='__main__':
- Log.basicConfig(level=Log.INFO)
- args= parse_cmdline()
- run(args)
|