Arreglada race condition de get_discs_of_artist
Ademas hice algo inteligente y agrege logs a la funcion, es mas facil ver que carajo paso
This commit is contained in:
@@ -5,6 +5,7 @@ correspondientes con lo que debe entregar la api, se encarga de casos como
|
||||
traducción.
|
||||
"""
|
||||
import json
|
||||
import logging
|
||||
from math import ceil
|
||||
|
||||
from country_list import countries_for_language
|
||||
@@ -14,6 +15,9 @@ from fetcher import jobs
|
||||
from utils import get_redis_connection
|
||||
|
||||
|
||||
_log = logging.getLogger('fetcher_medium')
|
||||
_log.addHandler(logging.NullHandler())
|
||||
|
||||
###
|
||||
# Utility code
|
||||
###
|
||||
@@ -209,13 +213,27 @@ def get_discs_of_artist(mbid, limit, page):
|
||||
# Si es que coinciden significa que se cargaron todos los discos, pero si no, quizás aun no
|
||||
# terminan de guardarse, por lo que salto el código de obtención y voy directo a musicbrainz
|
||||
with get_redis_connection() as redis:
|
||||
_log.debug('Intentando encontrar en cache los discos de %s', mbid)
|
||||
key_releases = f'artist:{mbid}:release_groups'
|
||||
if key_releases in redis:
|
||||
if int(redis.get(f'{key_releases}:count')) == redis.zcard(key_releases):
|
||||
mb_discs = [get_disc(mbid) for mbid in redis.zrange(key_releases, offset, limit)]
|
||||
total = redis.zcard(key_releases)
|
||||
release_ids = redis.zrange(key_releases, offset, limit)
|
||||
keys = [f'release_group:{mbid}' for mbid in release_ids]
|
||||
if redis.exists(*keys) == len(release_ids):
|
||||
_log.debug('Encontrados los discos de %s', mbid)
|
||||
mb_discs = [get_disc(mbid) for mbid in release_ids]
|
||||
total = redis.zcard(key_releases)
|
||||
else:
|
||||
_log.debug('Aun no se cargan todas las release_groups de %s', mbid)
|
||||
else:
|
||||
_log.debug('La cantidad de release_groups que hay almacenadas para %s no coinciden '
|
||||
'con las totales', key_releases)
|
||||
else:
|
||||
_log.debug('%s no se encontraba en redis, saltando código', key_releases)
|
||||
|
||||
if len(mb_discs) == 0:
|
||||
_log.debug('Cargar desde musicbrainz las releases de %s', mbid)
|
||||
|
||||
# Si es que no había ningún disco, enviar a cargar al artista, quizás nunca se a guardado
|
||||
# en cache antes
|
||||
jobs.load_artist_on_cache.delay(mbid)
|
||||
@@ -224,6 +242,7 @@ def get_discs_of_artist(mbid, limit, page):
|
||||
includes=['artist-credits'],
|
||||
limit=limit, offset=offset)
|
||||
if 'error' in mb_discs_browse:
|
||||
_log.error('Error al hacer browse %s', mb_discs_browse)
|
||||
return mb_discs_browse
|
||||
|
||||
mb_discs = mb_discs_browse.get('release_groups')
|
||||
|
||||
Reference in New Issue
Block a user