#!/users/dsc/bin/Python3 #-*-coding: UTF-8 -*- from asyncio.log import logger from pickle import TRUE from xmlrpc.client import boolean import IcePy import sys,traceback,Ice,os import MessageICE_ice import time import logging from logging.handlers import RotatingFileHandler from mntest import mnTest,mnTrain # from pyml_setting import LOGMake module_name="pyml"#本模块名 target_module_name="ProxyTest"#ice发送目标模块名 _M_baosight = Ice.openModule('baosight') log_file='/iPlature/log/{}.log'.format(module_name) max_bytes=10* 1024 * 1024#日志大小10M backup_count=20#日志数量 logger = logging.getLogger() logger.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s|%(levelname)s|%(message)s') filehandler = logging.handlers.RotatingFileHandler(log_file, mode='a', maxBytes=max_bytes, backupCount=backup_count)#每 1024Bytes重写一个文件,保留2(backupCount) 个旧文件 filehandler.setFormatter(formatter) logger.addHandler(filehandler) # logger=LOGMake.get_log(module_name) flag1=False class PymlICE(MessageICE_ice._M_baosight.MessageICE): """_PymlICE_,继承于 MessageICE_ice._M_baosight.MessageICE Args: MessageICE_ice (_type_): _ICE通信_ 主方法: 1.SendDataShort接收ICE信息(常用); 2.SendDataLong接收ICE信息(几乎不用); 3.TimeNotify接收appgtm的定时调用,配置在crgs.cfg """ def SendDataShort(self, eventNo, seq, length, context=None): """_SendDataShort_ Args: eventNo (_type_): _事件号_,1:训练;2:预测 seq (_type_): _模型参数_:1.模型信息;2.数据信息 length (_type_): _数据长度_ context (_type_, optional): _description_. Defaults to None. """ logger.info("SendDataShort eventNo:"+str(eventNo)+str(seq)) # if(eventNo==1): # logger.info("mnTrain()") # logger.info(mnTrain()) # elif(eventNo==2): # logger.info("mnTest()") # res=mnTest() # logger.info(str(res)) # else: # logger.info("undefined eventno!") def SendDataLong(self, eventNo, seq, length, context=None): logger.info("eventNo:"+str(eventNo)) def TimeNotify(self, eventNo, seq, length, context=None): # global flag1 logger.info("TimeNotify eventNo:"+str(eventNo)) # seq=b'Send2Proxy:Test!' # if(flag1): # self.Send2Proxy("ProxyTest",2, seq, len(seq)) # else: # flag1=TRUE # self.Send2Proxy("ProxyTest",1, seq, len(seq)) def Send2Proxy(self, proxy_name,eventNo, seq, length, context=None): with Ice.initialize(sys.argv) as communicator: base = communicator.stringToProxy("baosight/{}".format(proxy_name)).ice_oneway().ice_secure(False) proxy = _M_baosight.MessageICEPrx.uncheckedCast(base) if not proxy: logger.error("invalid proxy") sys.exit(1) logger.info("send {seq} to {proxy_name}".format(seq=seq,proxy_name=proxy_name)) proxy.SendDataShort(eventNo, seq, length) if __name__ == '__main__': default={ "identity":"baosight/{}".format(module_name),#identity "adapterName":"DefaultAdapter", "endpoints":"tcp", "entry":PymlICE() } with Ice.initialize(sys.argv) as communicator: print("start") properties = communicator.getProperties() adapter = communicator.createObjectAdapterWithEndpoints(default["adapterName"],default["endpoints"]) identity = properties.getProperty("Identity") if identity == None or identity == "": identity = default["identity"] print("identity" + identity) id = Ice.stringToIdentity(identity) adapter.add(default["entry"], id) adapter.activate() communicator.waitForShutdown()