mirror of
https://github.com/spotipy-dev/spotipy.git
synced 2026-10-12 09:10:45 +00:00
Add RedisCacheHandler (#747)
* add RedisCacheHandler * add the explanation for customized chache handlers * update the dependency and chengelog
This commit is contained in:
1 parent
0a9270f385
commit
7d23fc3277
4 files changed
+45
-2
No files matched your search
@@ -1,4 +1,9 @@
|
||||
__all__ = ['CacheHandler', 'CacheFileHandler', 'DjangoSessionCacheHandler', 'MemoryCacheHandler']
|
||||
__all__ = [
|
||||
'CacheHandler',
|
||||
'CacheFileHandler',
|
||||
'DjangoSessionCacheHandler',
|
||||
'MemoryCacheHandler',
|
||||
'RedisCacheHandler']
|
||||
|
||||
import errno
|
||||
import json
|
||||
@@ -6,6 +11,8 @@ import logging
|
||||
import os
|
||||
from spotipy.util import CLIENT_CREDS_ENV_VARS
|
||||
|
||||
from redis import RedisError
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -138,3 +145,32 @@ class DjangoSessionCacheHandler(CacheHandler):
|
||||
self.request.session['token_info'] = token_info
|
||||
except Exception as e:
|
||||
logger.warning("Error saving token to cache: " + str(e))
|
||||
|
||||
|
||||
class RedisCacheHandler(CacheHandler):
|
||||
"""
|
||||
A cache handler that stores the token info in the Redis.
|
||||
"""
|
||||
|
||||
def __init__(self, redis):
|
||||
"""
|
||||
Parameters:
|
||||
* redis: Redis object provided by redis-py library
|
||||
(https://github.com/redis/redis-py)
|
||||
"""
|
||||
self.redis = redis
|
||||
|
||||
def get_cached_token(self):
|
||||
token_info = None
|
||||
try:
|
||||
token_info = json.loads(self.redis.get('token_info'))
|
||||
except RedisError as e:
|
||||
logger.warning('Error getting token from cache: ' + str(e))
|
||||
|
||||
return token_info
|
||||
|
||||
def save_token_to_cache(self, token_info):
|
||||
try:
|
||||
self.redis.set('token_info', json.dumps(token_info))
|
||||
except RedisError as e:
|
||||
logger.warning('Error saving token to cache: ' + str(e))
|
||||
Reference in new issue
Block a user