示例#1
0
def PingLoggerThread():

    pingTime = time.time() + GlobalVals.PING_INTERVAL
    timeToPing = False

    while True:

        with GlobalVals.BREAK_PING_THREAD_MUTEX:
            if GlobalVals.BREAK_PING_THREAD:
                break

        currentTime = time.time()

        if currentTime >= pingTime:
            timeToPing = True
        else:
            time.sleep(0.2)
            continue

        if timeToPing:

            # change values
            timeToPing = False
            pingTime = time.time() + GlobalVals.PING_INTERVAL
            pingStrings = []

            # get list of system IDs
            systemList = NetworkManager.RequestSystemsList()
            if len(systemList) == 0:
                continue

            # get ping for each system
            for x in systemList:
                ping = NetworkManager.PingTarget(x)
                reportTime = int(time.time())
                if ping == -1:
                    pingStrings.append("Time: " + str(reportTime) +
                                       ", System " + str(x) +
                                       ", ERROR: Invalid system ID.\n")
                elif ping == -2:
                    pingStrings.append("Time: " + str(reportTime) +
                                       ", System " + str(x) +
                                       ", ERROR: Ping timed out.\n")
                else:
                    pingStrings.append("Time: " + str(reportTime) +
                                       ", System " + str(x) + ", Ping: " +
                                       str(ping) + "\n")

            # Open log file
            try:
                fileObj = open(GlobalVals.PING_LOG_FILE, "a")
            except Exception as e:
                print("Ping Logger: Error opening file. Now breaking thread.")
                print("Ping Logger: Exception: " + str(e.__class__))
                with GlobalVals.BREAK_PING_THREAD_MUTEX:
                    GlobalVals.BREAK_PING_THREAD = True
                break

            # Write to log file
            try:
                for x in pingStrings:
                    fileObj.write(x)
            except Exception as e:
                print(
                    "Ping Logger: Error writting to file. Now breaking thread."
                )
                print("Ping Logger: Exception: " + str(e.__class__))
                with GlobalVals.BREAK_PING_THREAD_MUTEX:
                    GlobalVals.BREAK_PING_THREAD = True
                break
            finally:
                fileObj.close()