@@ -95,6 +95,8 @@ def request(self, metadata, method, url, **kwargs):
9595 while retries > 0 :
9696 # Make the HTTP request to the API endpoint
9797 try :
98+ if response :
99+ response .close ()
98100 response = self ._req_session .request (method , abs_url , allow_redirects = False , ** kwargs )
99101 reason = response .reason if response .reason else ''
100102 status = response .status_code
@@ -190,7 +192,12 @@ def get(self, metadata, url, params=None):
190192 metadata ['url' ] = url
191193 metadata ['params' ] = params
192194 response = self .request (metadata , 'GET' , url , params = params )
193- return response .json () if response and response .text .strip () else None
195+ ret = None
196+ if response :
197+ if response .text .strip ():
198+ ret = response .json ()
199+ response .close ()
200+ return ret
194201
195202 def get_pages (self , metadata , url , params = None , total_pages = - 1 , direction = 'next' ):
196203 if type (total_pages ) == str and total_pages .lower () == 'all' :
@@ -217,6 +224,9 @@ def get_pages(self, metadata, url, params=None, total_pages=-1, direction='next'
217224 elif 'rel=last' in l :
218225 last = l [l .find ('<' )+ 1 :l .find ('>' )]
219226
227+ response .close ()
228+ response = None
229+
220230 # GET the subsequent page
221231 if direction == 'next' and next :
222232 metadata ['page' ] += 1
@@ -243,24 +253,39 @@ def get_pages(self, metadata, url, params=None, total_pages=-1, direction='next'
243253
244254 total_pages -= 1
245255
256+ if response :
257+ response .close ()
258+
246259 return results
247260
248261 def post (self , metadata , url , json = None ):
249262 metadata ['method' ] = 'POST'
250263 metadata ['url' ] = url
251264 metadata ['json' ] = json
252265 response = self .request (metadata , 'POST' , url , json = json )
253- return response .json () if response and response .text .strip () else None
266+ ret = None
267+ if response :
268+ if response .text .strip ():
269+ ret = response .json ()
270+ response .close ()
271+ return ret
254272
255273 def put (self , metadata , url , json = None ):
256274 metadata ['method' ] = 'PUT'
257275 metadata ['url' ] = url
258276 metadata ['json' ] = json
259277 response = self .request (metadata , 'PUT' , url , json = json )
260- return response .json () if response and response .text .strip () else None
278+ ret = None
279+ if response :
280+ if response .text .strip ():
281+ ret = response .json ()
282+ response .close ()
283+ return ret
261284
262285 def delete (self , metadata , url ):
263286 metadata ['method' ] = 'DELETE'
264287 metadata ['url' ] = url
265- self .request (metadata , 'DELETE' , url )
288+ response = self .request (metadata , 'DELETE' , url )
289+ if response :
290+ response .close ()
266291 return None
0 commit comments