From 0215bdf5f155947ef47d3fd16d330d9ac17c31e8 Mon Sep 17 00:00:00 2001 From: facetoe Date: Sat, 21 May 2016 10:39:58 +0800 Subject: [PATCH] Continue on 500/503 errors. --- i3pystatus/google_calendar.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/i3pystatus/google_calendar.py b/i3pystatus/google_calendar.py index 3ba3eee..d850a30 100644 --- a/i3pystatus/google_calendar.py +++ b/i3pystatus/google_calendar.py @@ -5,8 +5,9 @@ import oauth2client import pytz from apiclient import discovery from dateutil import parser +from googleapiclient.errors import HttpError -from i3pystatus import IntervalModule +from i3pystatus import IntervalModule, logger from i3pystatus.core.color import ColorRangeModule from i3pystatus.core.util import internet, require @@ -108,17 +109,25 @@ class GoogleCalendar(IntervalModule, ColorRangeModule): return event def get_events(self): - now, later = self.get_timerange() - events_result = self.service.events().list( - calendarId='primary', - timeMin=now, - timeMax=later, - maxResults=10, - singleEvents=True, - orderBy='startTime', - timeZone='utc' - ).execute() - return events_result.get('items', []) + events = [] + try: + now, later = self.get_timerange() + events_result = self.service.events().list( + calendarId='primary', + timeMin=now, + timeMax=later, + maxResults=10, + singleEvents=True, + orderBy='startTime', + timeZone='utc' + ).execute() + events = events_result.get('items', []) + except HttpError as e: + if e.resp.status in (500, 503): + logger.warn("GoogleCalendar received %s while retrieving events" % e.resp.status) + else: + raise + return events def get_timerange(self): now = datetime.datetime.utcnow()