eis/TestProject/pyml/pyml.py

107 lines
3.9 KiB
Python
Raw Normal View History

#!/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()