@@ -87,15 +87,17 @@ def send_query(query, query_type, headers, cursor=None):
8787 # Build request payload
8888 payload = {"query" : "" .join (query .split ("\n " ))}
8989
90- retries = 10
90+ max_retries = 10
91+ retries = max_retries
9192 while retries > 0 :
9293 try :
9394 response = requests .post (endpoint , json = payload , headers = headers )
9495 except (
9596 requests .exceptions .ChunkedEncodingError ,
9697 requests .exceptions .ConnectionError ,
9798 ) as e :
98- print (f"`requests` error: { e } ; retrying." )
99+ print (f"`requests` error: { e } ; retrying after 1 minute." )
100+ time .sleep (1 * 60 )
99101 retries -= 1
100102 else :
101103 data = json .loads (response .content )
@@ -105,7 +107,11 @@ def send_query(query, query_type, headers, cursor=None):
105107 retries -= 1
106108 else :
107109 # Success
108- retries = 0
110+ retries = - 1
111+
112+ if retries == 0 :
113+ msg = f"Could not fetch data after { max_retries } attempts. Aborting."
114+ raise SystemExit (msg )
109115
110116 rate_limit = {
111117 h : response .headers [h ]
@@ -133,8 +139,9 @@ def get_all_responses(query, query_type, headers):
133139 rdata = send_query (query , query_type , headers , cursor = last_cursor )
134140 try :
135141 pdata , last_cursor , total_count = parse_single_query (rdata , query_type )
136- except KeyError :
137- print ("Malformed response; repeating request" )
142+ except (KeyError , ValueError ):
143+ print ("Malformed response; repeating request after 1 minute" )
144+ time .sleep (1 * 60 )
138145 continue
139146 data .extend (pdata )
140147 ratelimit_remaining = int (rdata ["x-ratelimit-remaining" ])
@@ -159,7 +166,7 @@ def parse_single_query(data, query_type):
159166 total_count = data ["data" ]["repository" ][query_type ]["totalCount" ]
160167 data = data ["data" ]["repository" ][query_type ]["edges" ]
161168 last_cursor = data [- 1 ]["cursor" ]
162- except KeyError as e :
169+ except ( KeyError , ValueError ) as e :
163170 print (f"Error parsing response: { data } " )
164171 raise e
165172 return data , last_cursor , total_count
0 commit comments