@@ -51,6 +51,7 @@ def __init__(self, url='https://api.app.netuitive.com/ingest',
5151 self .post_error_count = 0
5252 self .max_post_errors = 10
5353 self .connection_timeout = connection_timeout
54+ self .max_check_retry_count = 3
5455
5556 def post (self , element ):
5657 """
@@ -170,11 +171,11 @@ def post_check(self, check):
170171 + check .name + '/' \
171172 + check .elementId + '/' \
172173 + str (check .ttl )
174+ headers = {'User-Agent' : self .agent }
173175 try :
174- headers = {'User-Agent' : self .agent }
175176 request = urllib2 .Request (
176177 url , data = '' , headers = headers )
177- resp = urllib2 . urlopen (request , timeout = self .connection_timeout )
178+ resp = self . _repeat_request (request , self .connection_timeout )
178179 logging .debug ("Response code: %d" , resp .getcode ())
179180 resp .close ()
180181
@@ -219,3 +220,15 @@ def time_insync(self):
219220
220221 else :
221222 return (False )
223+
224+ def _repeat_request (self , request , timeout ):
225+ for i in range (self .max_check_retry_count + 1 ):
226+ try :
227+ return urllib2 .urlopen (request , timeout = timeout )
228+ except urllib2 .HTTPError as e :
229+ if 500 <= e .code < 600 and i < self .max_check_retry_count :
230+ logging .debug ("Response code: %d, retry count: %d from %d" ,
231+ e .code , i + 1 , self .max_check_retry_count )
232+ time .sleep (0.25 * (i + 1 ))
233+ else :
234+ raise
0 commit comments