mirror of
https://github.com/spotipy-dev/spotipy.git
synced 2026-10-12 17:10:45 +00:00
Added MemcacheCacheHandler (#1042)
* Added MemcacheCacheHandler * Import MemcacheError where used * Update index.rst --------- Co-authored-by: Stéphane Bruckert <stephane.bruckert@gmail.com>
This commit is contained in:
1 parent
913ae57275
commit
62a27a20e0
4 files changed
+44
-4
No files matched your search
@@ -4,7 +4,8 @@ __all__ = [
|
||||
'DjangoSessionCacheHandler',
|
||||
'FlaskSessionCacheHandler',
|
||||
'MemoryCacheHandler',
|
||||
'RedisCacheHandler']
|
||||
'RedisCacheHandler',
|
||||
'MemcacheCacheHandler']
|
||||
|
||||
import errno
|
||||
import json
|
||||
@@ -208,3 +209,34 @@ class RedisCacheHandler(CacheHandler):
|
||||
self.redis.set(self.key, json.dumps(token_info))
|
||||
except RedisError as e:
|
||||
logger.warning('Error saving token to cache: ' + str(e))
|
||||
|
||||
|
||||
class MemcacheCacheHandler(CacheHandler):
|
||||
"""A Cache handler that stores the token info in Memcache using the pymemcache client
|
||||
"""
|
||||
def __init__(self, memcache, key=None) -> None:
|
||||
"""
|
||||
Parameters:
|
||||
* memcache: memcache client object provided by pymemcache
|
||||
(https://pymemcache.readthedocs.io/en/latest/getting_started.html)
|
||||
* key: May be supplied, will otherwise be generated
|
||||
(takes precedence over `token_info`)
|
||||
"""
|
||||
self.memcache = memcache
|
||||
self.key = key if key else 'token_info'
|
||||
|
||||
def get_cached_token(self):
|
||||
from pymemcache import MemcacheError
|
||||
try:
|
||||
token_info = self.memcache.get(self.key)
|
||||
if token_info:
|
||||
return json.loads(token_info.decode())
|
||||
except MemcacheError as e:
|
||||
logger.warning('Error getting token from cache' + str(e))
|
||||
|
||||
def save_token_to_cache(self, token_info):
|
||||
from pymemcache import MemcacheError
|
||||
try:
|
||||
self.memcache.set(self.key, json.dumps(token_info))
|
||||
except MemcacheError as e:
|
||||
logger.warning('Error saving token to cache' + str(e))
|
||||
Reference in new issue
Block a user