当前位置: 首页>>代码示例>>Python>>正文


Python AsynsockDispatcher.jobFinished方法代码示例

本文整理汇总了Python中pysnmp.carrier.asynsock.dispatch.AsynsockDispatcher.jobFinished方法的典型用法代码示例。如果您正苦于以下问题:Python AsynsockDispatcher.jobFinished方法的具体用法?Python AsynsockDispatcher.jobFinished怎么用?Python AsynsockDispatcher.jobFinished使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pysnmp.carrier.asynsock.dispatch.AsynsockDispatcher的用法示例。


在下文中一共展示了AsynsockDispatcher.jobFinished方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: TrapReceiver

# 需要导入模块: from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher [as 别名]
# 或者: from pysnmp.carrier.asynsock.dispatch.AsynsockDispatcher import jobFinished [as 别名]
class TrapReceiver():
    def __init__(self, conf = {}):
        global logger
        if conf is None or any(conf) == False:
            self.__conf = util.loadConfig(appName = moduleName)
        else:
            self.__conf = conf

        logger = logging.getLogger(moduleName)
        # default value
        self.target = DEFAULT_HOST
        self.port = DEFAULT_PORT
        
        # validate required parameter
        if 'snmpTrap' in self.__conf and 'openclos_trap_group' in self.__conf['snmpTrap'] and 'target' in self.__conf['snmpTrap']['openclos_trap_group']:
            self.target = self.__conf['snmpTrap']['openclos_trap_group']['target']
        else:
            logger.info("snmpTrap:openclos_trap_group:target is missing from configuration. using %s" % (self.target))                

        if 'snmpTrap' in self.__conf and 'openclos_trap_group' in self.__conf['snmpTrap'] and 'port' in self.__conf['snmpTrap']['openclos_trap_group']:
            self.port = int(self.__conf['snmpTrap']['openclos_trap_group']['port'])
        else:
            logger.info("snmpTrap:openclos_trap_group:port is missing from configuration. using %d" % (self.port))                
            
        if 'snmpTrap' in self.__conf and 'threadCount' in self.__conf['snmpTrap']:
            self.executor = concurrent.futures.ThreadPoolExecutor(max_workers = self.__conf['snmpTrap']['threadCount'])
        else:
            self.executor = concurrent.futures.ThreadPoolExecutor(max_workers = DEFAULT_MAX_THREADS)

        # event to stop from sleep
        self.stopEvent = Event()
        
        self.twoStageConfigurationCallback = util.getTwoStageConfigurationCallback(self.__conf)
       
    def threadFunction(self):
        self.transportDispatcher = AsynsockDispatcher()

        self.transportDispatcher.registerRecvCbFun(onTrap)
        
        # UDP/IPv4
        self.transportDispatcher.registerTransport(
            udp.domainName, udp.UdpSocketTransport().openServerMode((self.target, self.port))
        )

        self.transportDispatcher.jobStarted(1)

        try:
            # Dispatcher will never finish as job#1 never reaches zero
            self.transportDispatcher.runDispatcher()
        except:
            self.transportDispatcher.closeDispatcher()
            raise
        else:
            self.transportDispatcher.closeDispatcher()

    def start(self):
        logger.info("Starting trap receiver...")
        self.thread = Thread(target=self.threadFunction, args=())
        self.thread.start()
        logger.info("Trap receiver started on %s:%d" % (self.target, self.port))

    def stop(self):
        logger.info("Stopping trap receiver...")
        self.stopEvent.set()
        self.executor.shutdown()
        self.transportDispatcher.jobFinished(1)  
        self.thread.join()
        logger.info("Trap receiver stopped")
开发者ID:codyrat,项目名称:OpenClos,代码行数:70,代码来源:trapd.py


注:本文中的pysnmp.carrier.asynsock.dispatch.AsynsockDispatcher.jobFinished方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。