adding json decode fail catch
This commit is contained in:
parent
24dfc77d63
commit
0561b0036e
@ -7,6 +7,8 @@ from time import sleep
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from datetime import datetime, date, time, timedelta
|
from datetime import datetime, date, time, timedelta
|
||||||
|
|
||||||
|
from requests import JSONDecodeError
|
||||||
|
|
||||||
from fmframework.model import Album, Artist, Image, Wiki, WeeklyChart, Scrobble, Track
|
from fmframework.model import Album, Artist, Image, Wiki, WeeklyChart, Scrobble, Track
|
||||||
|
|
||||||
|
|
||||||
@ -56,33 +58,39 @@ class Network:
|
|||||||
params=params,
|
params=params,
|
||||||
json=json,
|
json=json,
|
||||||
data=data)
|
data=data)
|
||||||
resp = response.json()
|
|
||||||
|
|
||||||
if 200 <= response.status_code < 300:
|
try:
|
||||||
logger.debug(f'{http_method} {method} {response.status_code}')
|
resp = response.json()
|
||||||
self.retry_counter = 0
|
|
||||||
return resp
|
|
||||||
|
|
||||||
code = resp.get('error', None)
|
if 200 <= response.status_code < 300:
|
||||||
message = resp.get('message', None)
|
logger.debug(f'{http_method} {method} {response.status_code}')
|
||||||
|
self.retry_counter = 0
|
||||||
|
return resp
|
||||||
|
|
||||||
if code:
|
code = resp.get('error', None)
|
||||||
if code in [8, 11, 16]:
|
message = resp.get('message', None)
|
||||||
if self.retry_counter < 5:
|
|
||||||
self.retry_counter += 1
|
|
||||||
sleep(2)
|
|
||||||
logger.warning(f'{method} {response.status_code} {code} {message} retyring')
|
|
||||||
return self.net_call(http_method=http_method,
|
|
||||||
method=method,
|
|
||||||
params=params,
|
|
||||||
data=data,
|
|
||||||
json=json,
|
|
||||||
headers=headers)
|
|
||||||
else:
|
|
||||||
self.retry_counter = 0
|
|
||||||
|
|
||||||
logger.error(f'{method} {response.status_code} {code} {message} retry limit reached')
|
if code:
|
||||||
raise LastFMNetworkException(http_code=response.status_code, error_code=code, message=message)
|
if code in [8, 11, 16]:
|
||||||
|
if self.retry_counter < 5:
|
||||||
|
self.retry_counter += 1
|
||||||
|
sleep(2)
|
||||||
|
logger.warning(f'{method} {response.status_code} {code} {message} retrying')
|
||||||
|
return self.net_call(http_method=http_method,
|
||||||
|
method=method,
|
||||||
|
params=params,
|
||||||
|
data=data,
|
||||||
|
json=json,
|
||||||
|
headers=headers)
|
||||||
|
else:
|
||||||
|
self.retry_counter = 0
|
||||||
|
|
||||||
|
logger.error(f'{method} {response.status_code} {code} {message} retry limit reached')
|
||||||
|
raise LastFMNetworkException(http_code=response.status_code, error_code=code, message=message)
|
||||||
|
|
||||||
|
except JSONDecodeError:
|
||||||
|
logger.warning(f"failed to decode json from resp, {method} {response} -> {response.content}")
|
||||||
|
return {}
|
||||||
|
|
||||||
def get_request(self,
|
def get_request(self,
|
||||||
method: str,
|
method: str,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "fmframework"
|
name = "fmframework"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
description = "Last.fm HTTP wrapper library"
|
description = "Last.fm HTTP wrapper library"
|
||||||
authors = ["andy <andy@sarsoo.xyz>"]
|
authors = ["andy <andy@sarsoo.xyz>"]
|
||||||
repository = "https://github.com/Sarsoo/fmframework"
|
repository = "https://github.com/Sarsoo/fmframework"
|
||||||
|
Loading…
Reference in New Issue
Block a user