def inactive_cleanup(exit_event): while True: exit_event.wait(60.0) if exit_event.is_set(): try: all_sessions = OpenOPC.get_sessions(host=opc_gate_host, port=opc_gate_port) for server, oid, ctime, xtime in all_sessions: OpenOPC.close_session(oid, host=opc_gate_host, port=opc_gate_port) except Exception as e: servicemanager.LogInfoMsg('\n\nException %s happen when stop opc gateway service' % e) finally: exit_event.clear() return else: try: all_sessions = OpenOPC.get_sessions(host=opc_gate_host, port=opc_gate_port) if len(all_sessions) > max_clients: stale_sessions = sorted(all_sessions, key=lambda s: s[3])[:-max_clients] else: stale_sessions = [s for s in all_sessions if time.time() - s[3] > (inactive_timeout * 60)] for server, oid, ctime, xtime in stale_sessions: OpenOPC.close_session(oid, host=opc_gate_host, port=opc_gate_port) time.sleep(1) except Exception as e: servicemanager.LogInfoMsg('\n\nException %s happen when cleanup timeout session' % e)
def inactive_cleanup(exit_event): while True: exit_event.wait(60.0) if exit_event.is_set(): all_sessions = OpenOPC.get_sessions(host=opc_gate_host, port=opc_gate_port) for oid, ip, ctime, xtime in all_sessions: OpenOPC.close_session(oid, host=opc_gate_host, port=opc_gate_port) exit_event.clear() return else: try: all_sessions = OpenOPC.get_sessions(host=opc_gate_host, port=opc_gate_port) except Pyro.errors.ProtocolError: all_sessions = [] if len(all_sessions) > max_clients: stale_sessions = sorted(all_sessions, key=lambda s: s[3])[:-max_clients] else: stale_sessions = [ s for s in all_sessions if time.time() - s[3] > (inactive_timeout * 60) ] for oid, ip, ctime, xtime in stale_sessions: OpenOPC.close_session(oid, host=opc_gate_host, port=opc_gate_port) time.sleep(1)
def inactive_cleanup(exit_event): while True: exit_event.wait(60.0) if exit_event.is_set(): all_sessions = OpenOPC.get_sessions(host=opc_gate_host, port=opc_gate_port) for oid, ip, ctime, xtime in all_sessions: OpenOPC.close_session(oid, host=opc_gate_host, port=opc_gate_port) exit_event.clear() return else: try: all_sessions = OpenOPC.get_sessions(host=opc_gate_host, port=opc_gate_port) except Pyro.errors.ProtocolError: all_sessions = [] if len(all_sessions) > max_clients: stale_sessions = sorted(all_sessions, key=lambda s: s[3])[:-max_clients] else: stale_sessions = [s for s in all_sessions if time.time()-s[3] > (inactive_timeout*60)] for oid, ip, ctime, xtime in stale_sessions: OpenOPC.close_session(oid, host=opc_gate_host, port=opc_gate_port) time.sleep(1)