try fix
This commit is contained in:
parent
d995932a1c
commit
1a49c7c59e
@ -155,8 +155,13 @@ class DoubanApi(metaclass=Singleton):
|
|||||||
def __sign(cls, url: str, ts: int, method='GET') -> str:
|
def __sign(cls, url: str, ts: int, method='GET') -> str:
|
||||||
url_path = parse.urlparse(url).path
|
url_path = parse.urlparse(url).path
|
||||||
raw_sign = '&'.join([method.upper(), parse.quote(url_path, safe=''), str(ts)])
|
raw_sign = '&'.join([method.upper(), parse.quote(url_path, safe=''), str(ts)])
|
||||||
return base64.b64encode(hmac.new(cls._api_secret_key.encode(), raw_sign.encode(), hashlib.sha1).digest()
|
return base64.b64encode(
|
||||||
).decode()
|
hmac.new(
|
||||||
|
cls._api_secret_key.encode(),
|
||||||
|
raw_sign.encode(),
|
||||||
|
hashlib.sha1
|
||||||
|
).digest()
|
||||||
|
).decode()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@lru_cache(maxsize=settings.CACHE_CONF.get('douban'))
|
@lru_cache(maxsize=settings.CACHE_CONF.get('douban'))
|
||||||
|
@ -8,6 +8,7 @@ from functools import lru_cache
|
|||||||
import requests
|
import requests
|
||||||
import requests.exceptions
|
import requests.exceptions
|
||||||
|
|
||||||
|
from app.utils.http import RequestUtils
|
||||||
from .exceptions import TMDbException
|
from .exceptions import TMDbException
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -24,7 +25,13 @@ class TMDb(object):
|
|||||||
TMDB_DOMAIN = "TMDB_DOMAIN"
|
TMDB_DOMAIN = "TMDB_DOMAIN"
|
||||||
REQUEST_CACHE_MAXSIZE = None
|
REQUEST_CACHE_MAXSIZE = None
|
||||||
|
|
||||||
def __init__(self, obj_cached=True):
|
_req = None
|
||||||
|
|
||||||
|
def __init__(self, obj_cached=True, session=None):
|
||||||
|
if session is not None:
|
||||||
|
self._req = RequestUtils(session=session, proxies=self.proxies)
|
||||||
|
else:
|
||||||
|
self._req = RequestUtils(session=requests.Session(), proxies=self.proxies)
|
||||||
self._remaining = 40
|
self._remaining = 40
|
||||||
self._reset = None
|
self._reset = None
|
||||||
self._timeout = 15
|
self._timeout = 15
|
||||||
@ -129,9 +136,13 @@ class TMDb(object):
|
|||||||
|
|
||||||
@lru_cache(maxsize=REQUEST_CACHE_MAXSIZE)
|
@lru_cache(maxsize=REQUEST_CACHE_MAXSIZE)
|
||||||
def cached_request(self, method, url, data, json):
|
def cached_request(self, method, url, data, json):
|
||||||
with requests.Session() as s:
|
return self.request(method, url, data, json)
|
||||||
return s.request(method, url, data=data, json=json,
|
|
||||||
timeout=self._timeout, proxies=self.proxies)
|
def request(self, method, url, data, json):
|
||||||
|
if method == "GET":
|
||||||
|
return self._req.get_res(url, params=data, json=json)
|
||||||
|
else:
|
||||||
|
return self._req.post_res(url, data=data, json=json)
|
||||||
|
|
||||||
def cache_clear(self):
|
def cache_clear(self):
|
||||||
return self.cached_request.cache_clear()
|
return self.cached_request.cache_clear()
|
||||||
@ -152,9 +163,7 @@ class TMDb(object):
|
|||||||
if self.cache and self.obj_cached and call_cached and method != "POST":
|
if self.cache and self.obj_cached and call_cached and method != "POST":
|
||||||
req = self.cached_request(method, url, data, json)
|
req = self.cached_request(method, url, data, json)
|
||||||
else:
|
else:
|
||||||
with requests.Session() as s:
|
req = self.request(method, url, data, json)
|
||||||
req = s.request(method, url, data=data, json=json,
|
|
||||||
timeout=self._timeout, proxies=self.proxies)
|
|
||||||
|
|
||||||
headers = req.headers
|
headers = req.headers
|
||||||
|
|
||||||
|
@ -91,12 +91,19 @@ class RequestUtils:
|
|||||||
except requests.exceptions.RequestException:
|
except requests.exceptions.RequestException:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_res(self, url: str, params: dict = None,
|
def get_res(self, url: str,
|
||||||
allow_redirects: bool = True, raise_exception: bool = False) -> Optional[Response]:
|
params: dict = None,
|
||||||
|
data: Any = None,
|
||||||
|
json: dict = None,
|
||||||
|
allow_redirects: bool = True,
|
||||||
|
raise_exception: bool = False
|
||||||
|
) -> Optional[Response]:
|
||||||
try:
|
try:
|
||||||
if self._session:
|
if self._session:
|
||||||
return self._session.get(url,
|
return self._session.get(url,
|
||||||
params=params,
|
params=params,
|
||||||
|
data=data,
|
||||||
|
json=json,
|
||||||
verify=False,
|
verify=False,
|
||||||
headers=self._headers,
|
headers=self._headers,
|
||||||
proxies=self._proxies,
|
proxies=self._proxies,
|
||||||
@ -106,6 +113,8 @@ class RequestUtils:
|
|||||||
else:
|
else:
|
||||||
return requests.get(url,
|
return requests.get(url,
|
||||||
params=params,
|
params=params,
|
||||||
|
data=data,
|
||||||
|
json=json,
|
||||||
verify=False,
|
verify=False,
|
||||||
headers=self._headers,
|
headers=self._headers,
|
||||||
proxies=self._proxies,
|
proxies=self._proxies,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user