@@ -521,6 +521,9 @@ def json_request(self, **kwargs):
521
521
522
522
return info
523
523
524
+ def send_downstream_message (self , ** kwargs ):
525
+ return self .json_request (** kwargs )
526
+
524
527
def send_topic_message (self , ** kwargs ):
525
528
"""
526
529
Publish Topic Messaging to GCM servers
@@ -545,16 +548,19 @@ def send_topic_message(self, **kwargs):
545
548
try :
546
549
response = self .make_request (payload , is_json = True , session = session )
547
550
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 ))
555
555
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
558
565
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