Skip to content

Commit e829eef

Browse files
committed
Linting fixes. Handle retry_after in topic_message sending
1 parent 6d708b3 commit e829eef

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

gcm/gcm.py

+17-11
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,9 @@ def json_request(self, **kwargs):
521521

522522
return info
523523

524+
def send_downstream_message(self, **kwargs):
525+
return self.json_request(**kwargs)
526+
524527
def send_topic_message(self, **kwargs):
525528
"""
526529
Publish Topic Messaging to GCM servers
@@ -545,16 +548,19 @@ def send_topic_message(self, **kwargs):
545548
try:
546549
response = self.make_request(payload, is_json=True, session=session)
547550
return self.handle_topic_response(response)
548-
except GCMUnavailableException:
549-
sleep_time = backoff / 2 + random.randrange(backoff)
550-
time.sleep(float(sleep_time) / 1000)
551-
if 2 * backoff < self.MAX_BACKOFF_DELAY:
552-
backoff *= 2
553-
else:
554-
raise IOError("Could not make request after %d attempts" % retries)
551+
except (GCMUnavailableException, GCMTopicMessageException):
552+
if self.retry_after:
553+
GCM.log("[send_topic_message - Attempt #{0}] Retry-After ~> Sleeping for {1}"
554+
.format(attempt, self.retry_after))
555555

556-
def send_device_group_message(self, **kwargs):
557-
raise NotImplementedError
556+
time.sleep(self.retry_after)
557+
self.retry_after = None
558+
else:
559+
sleep_time = backoff / 2 + random.randrange(backoff)
560+
nap_time = float(sleep_time) / 1000
561+
GCM.log("[send_topic_message - Attempt #{0}] Backoff ~> Sleeping for {1}".format(attempt, nap_time))
562+
time.sleep(nap_time)
563+
if 2 * backoff < self.MAX_BACKOFF_DELAY:
564+
backoff *= 2
558565

559-
def send_downstream_message(self, **kwargs):
560-
return self.json_request(**kwargs)
566+
raise IOError("Could not make request after %d attempts" % retries)

0 commit comments

Comments
 (0)