diff --git a/platypush/backend/ping.py b/platypush/backend/ping.py index 321d44d11..15dc321a9 100644 --- a/platypush/backend/ping.py +++ b/platypush/backend/ping.py @@ -22,31 +22,35 @@ class PingBackend(Backend): class Pinger(Worker): def __init__(self, *args, **kwargs): self.timeout = kwargs.pop('timeout') + self.count = kwargs.pop('count') super().__init__(*args, **kwargs) def process(self, host: str) -> Tuple[str, bool]: pinger = get_plugin('ping') - response = pinger.ping(host, timeout=self.timeout, count=1).output + response = pinger.ping(host, timeout=self.timeout, count=self.count).output return host, response['success'] is True - def __init__(self, hosts: List[str], timeout: float = 5.0, interval: float = 60.0, *args, **kwargs): + def __init__(self, hosts: List[str], timeout: float = 5.0, interval: float = 60.0, count: int = 1, *args, **kwargs): """ :param hosts: List of IP addresses or host names to monitor. :param timeout: Ping timeout. :param interval: Interval between two scans. + :param count: Number of pings per host. A host will be considered down + if all the ping requests fail. """ super().__init__(*args, **kwargs) self.hosts = {h: None for h in hosts} self.timeout = timeout self.interval = interval + self.count = count def run(self): super().run() self.logger.info('Starting ping backend with {} hosts to monitor'.format(len(self.hosts))) while not self.should_stop(): - workers = Workers(10, self.Pinger, timeout=self.timeout) + workers = Workers(10, self.Pinger, timeout=self.timeout, count=self.count) with workers: for host in self.hosts.keys():