def run(self): while 0 < len(subscribers): for sub in subscribers: isIpReachable = str(ipreach.isReachable(sub.subIp)) if isIpReachable != sub.lastResponse: sub.lastResponse = isIpReachable send(sub) time.sleep(5)
def add(subIp, ip, port): lock.acquire() try: sub = subscriber(subIp, ip, port, str(ipreach.isReachable(subIp))) subscribers.append(sub) send(sub) if len(subscribers) == 1: sub_handler() finally: lock.release() # release lock, no matter what