Bugfixes.
[python_utils.git] / cached / weather_forecast.py
index 6e2f5f9ca0ffcc9eae3d2c7d6615549fb222a0db..a413d9f424b3c76d0839a44695310516dee2cdf4 100644 (file)
@@ -59,15 +59,23 @@ class CachedDetailedWeatherForecast(object):
         self.forecasts = {}
 
         # Ask the raspberry pi about the outside temperature.
-        www = urllib.request.urlopen(
-            "http://10.0.0.75/~pi/outside_temp"
-        )
-        current_temp = www.read().decode("utf-8")
-        current_temp = float(current_temp)
-        current_temp *= (9/5)
-        current_temp += 32.0
-        current_temp = round(current_temp)
-        www.close()
+        www = None
+        try:
+            www = urllib.request.urlopen(
+                "http://10.0.0.75/~pi/outside_temp",
+                timeout=2,
+            )
+            current_temp = www.read().decode("utf-8")
+            current_temp = float(current_temp)
+            current_temp *= (9/5)
+            current_temp += 32.0
+            current_temp = round(current_temp)
+        except Exception:
+            logger.warning('Timed out reading 10.0.0.75/~pi/outside_temp?!')
+            current_temp = None
+        finally:
+            if www is not None:
+                www.close()
 
         # Get a weather forecast for Bellevue.
         www = urllib.request.urlopen(
@@ -102,7 +110,7 @@ class CachedDetailedWeatherForecast(object):
             sunrise = s['sunrise']
             sunset = s['sunset']
 
-            if dt.date() == now.date() and not said_temp:
+            if dt.date() == now.date() and not said_temp and current_temp is not None:
                 blurb = f'{day.get_text()}: The current outside tempterature is {current_temp}. '
                 blurb += txt.get_text()
                 said_temp = True