agregado cache a get_artist_of_disc

This commit is contained in:
Daniel Cortes
2020-06-09 05:55:48 -04:00
parent d6060915de
commit d62253051b
3 changed files with 26 additions and 19 deletions

View File

@@ -151,7 +151,9 @@ def load_artist_on_cache(artist):
redis.set(f'artist_{mbid}:release_group_count',
release_groups.get('release_group_count'))
for release_group in release_groups.get('release_groups'):
redis.rpush(f'artist_{mbid}:release_groups', release_group.get('id'))
release_group_id = release_group.get('id')
redis.rpush(f'artist_{mbid}:release_groups', release_group_id)
redis.set(f'release_group_{release_group_id}:artist', mbid)
load_entities_of_release_group.delay(release_group)
offset += 100

View File

@@ -199,9 +199,9 @@ def get_discs_of_artist(mbid, limit, page):
key_count = f'artist_{mbid}:release_group_count'
if key_count in redis:
key = f'artist_{mbid}:release_groups'
if int(redis.get(key_count)) == redis.llen(key):
mb_discs_ids = redis.lrange(key, offset, limit)
mb_discs = [get_disc(mbid) for mbid in mb_discs_ids]
mb_disc_ids = redis.lrange(key, offset, limit)
if redis.exists(*[f'release_group_{mbid}' for mbid in mb_disc_ids]) == len(mb_disc_ids):
mb_discs = [get_disc(mbid) for mbid in mb_disc_ids]
total = redis.llen(key)
if len(mb_discs) == 0:
@@ -221,17 +221,28 @@ def get_discs_of_artist(mbid, limit, page):
}
def get_artist_of_disc(mbid, limit, page):
def get_artist_of_disc(mbid):
"""Obtiene el artista de un disco"""
mb_artists = mb.browse_artists(params={'release-group': mbid},
limit=limit, offset=limit * (page - 1))
if 'error' in mb_artists:
return mb_artists
mb_artist = None
with get_redis_connection() as redis:
key_id = f'release_group_{mbid}:artist'
if key_id in redis:
mb_artist = get_artist(redis.get(key_id))
if mb_artist is None:
mb_artist_browse = mb.browse_artists(params={'release-group': mbid}, limit=0, offset=0)
if 'error' in mb_artist_browse:
return mb_artist_browse
mb_artist = mb_artist_browse.get('artists')[0]
jobs.load_artist_on_cache.delay(mb_artist)
return {
'paginate': paginate(mb_artists.get('artist_count', 0), limit, page),
'artists': [map_artist(artist) for artist in mb_artists['artists']]
'artist': map_artist(mb_artist)
}

View File

@@ -69,15 +69,9 @@ def get_discs_of_artist(request, mbid):
@api_view(['GET'])
def get_artist_of_disc(request, mbid):
""" Obtiene el artista de un disco
""" Obtiene el artista de un disco"""
Como los datos son paginables la query puede contener per_page y page para definir cuantos
elementos mostrar por pagina y que pagina mostrar.
"""
limit = int(request.GET.get('per_page', 10))
page = int(request.GET.get('page', 1))
return Response(medium.get_artist_of_disc(mbid, limit, page))
return Response(medium.get_artist_of_disc(mbid))
@api_view(['GET'])