eis/TestProject/pyml/pyml.py

107 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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