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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
# Establish signal handler for keyboard interrupts

sh = SigHandler()
signal.signal(signal.SIGINT, sh)
if os.name == 'nt':
    signal.signal(signal.SIGBREAK, sh)
signal.signal(signal.SIGTERM, sh)

# ACTION: List active sessions in OpenOPC service

if action == 'sessions':
    print '  %-38s %-18s %-18s' % ('Remote Client', 'Start Time',
                                   'Last Transaction')
    try:
        for guid, host, init_time, tx_time in OpenOPC.get_sessions(
                open_host, open_port):
            print '  %-38s %-18s %-18s' % (host, time2str(init_time),
                                           time2str(tx_time))
    except:
        error_msg = sys.exc_info()[1]
        print "Cannot connect to OpenOPC service at %s:%s - %s" % (
            open_host, open_port, error_msg)
    exit()

# Connect to OpenOPC service (Open mode)

if opc_mode == 'open':
    try:
        opc = OpenOPC.open_client(open_host, open_port)
    except:
        error_msg = sys.exc_info()[1]
예제 #5
0
파일: opc.py 프로젝트: bapowell/OpenOPC
    health_only = False

# Establish signal handler for keyboard interrupts

sh = SigHandler()
signal.signal(signal.SIGINT,sh)
if os.name == 'nt':
    signal.signal(signal.SIGBREAK,sh)
signal.signal(signal.SIGTERM,sh)

# ACTION: List active sessions in OpenOPC service

if action == 'sessions':
   print '  %-38s %-18s %-18s' % ('Remote Client', 'Start Time', 'Last Transaction')
   try:
      for guid, host, init_time, tx_time in OpenOPC.get_sessions(open_host, open_port):
         print '  %-38s %-18s %-18s'  % (host, time2str(init_time), time2str(tx_time))
   except:
      error_msg = sys.exc_info()[1]
      print "Cannot connect to OpenOPC service at %s:%s - %s" % (open_host, open_port, error_msg)
   exit()
   
# Connect to OpenOPC service (Open mode)

if opc_mode == 'open':
   try:
      opc = OpenOPC.open_client(open_host, open_port)
   except:
      error_msg = sys.exc_info()[1]
      print "Cannot connect to OpenOPC Gateway Service at %s:%s - %s" % (open_host, open_port, error_msg)
      exit()
# Establish signal handler for keyboard interrupts

sh = SigHandler()
signal.signal(signal.SIGINT, sh)
if os.name == 'nt':
    signal.signal(signal.SIGBREAK, sh)
signal.signal(signal.SIGTERM, sh)

# ACTION: List active sessions in OpenOPC service

if action == 'sessions':
    print('  %-32s %-38s %-18s %-18s' %
          ('OPC Server', 'Client Object', 'Start Time', 'Last Transaction'))
    try:
        for server, guid, init_time, tx_time in OpenOPC.get_sessions(
                open_host, open_port):
            print('  %-32s %-38s %-18s %-18s' %
                  (server, guid, time2str(init_time), time2str(tx_time)))
    except:
        error_msg = sys.exc_info()[1]
        print("Cannot connect to OpenOPC service at %s:%s - %s" %
              (open_host, open_port, error_msg))
    exit()

# Connect to OpenOPC service (Open mode)

if opc_mode == 'open':
    try:
        opc = OpenOPC.open_client(open_host, open_port)
    except:
        error_msg = sys.exc_info()[1]