From: Scott Date: Tue, 18 Jan 2022 23:18:21 +0000 (-0800) Subject: Don't let chromecasts steal the thread for too long. X-Git-Url: https://wannabe.guru.org/gitweb/?a=commitdiff_plain;h=1315e2d5356aa3616ef96ded72b7902c8591ebd7;p=python_utils.git Don't let chromecasts steal the thread for too long. --- diff --git a/smart_home/chromecasts.py b/smart_home/chromecasts.py index 5e11ac0..7480cec 100644 --- a/smart_home/chromecasts.py +++ b/smart_home/chromecasts.py @@ -5,7 +5,6 @@ import atexit import datetime import logging -import time import pychromecast @@ -29,7 +28,11 @@ class BaseChromecast(dev.Device): or (now - BaseChromecast.refresh_ts).total_seconds() > 60 ): logger.debug('Refreshing the shared chromecast info list') - BaseChromecast.ccasts, BaseChromecast.browser = pychromecast.get_chromecasts() + if BaseChromecast.browser is not None: + BaseChromecast.browser.stop_discovery() + BaseChromecast.ccasts, BaseChromecast.browser = pychromecast.get_chromecasts( + timeout=10.0 + ) atexit.register(BaseChromecast.browser.stop_discovery) BaseChromecast.refresh_ts = now @@ -38,8 +41,7 @@ class BaseChromecast(dev.Device): if cc.cast_info.host == ip: logger.debug(f'Found chromecast at {ip}: {cc}') self.cast = cc - self.cast.wait() - time.sleep(0.1) + self.cast.wait(timeout=1.0) if self.cast is None: raise Exception(f'Can\'t find ccast device at {ip}, is that really a ccast device?')