"""Jobs a ejecutar en el fondo""" import logging import json import django_rq from django.core.cache import cache from fetcher import musicbrainz as mb _log = logging.getLogger('fetcher_jobs') _log.addHandler(logging.NullHandler()) @django_rq.job def load_entities_of_release_group(mbid): # pylint: disable=unused-argument """Carga en cache un release group y sus entidades relacionadas""" @django_rq.job def load_artist_on_cache(mbid): """Carga en cache a un artista y todas sus entidades""" if cache.ttl(f'artist_{mbid}') != 0: _log.info('El artista ya se habia procesado anteriormente') return artista = mb.get_artist_by_mbid(mbid, includes=['tags']) cache.set(f'artist_{mbid}', json.dumps(artista)) _log.info('Artista %s almacenado en cache', mbid) offset = 0 while True: release_groups = mb.browse_release_groups({'artist': mbid}, limit=100, offset=offset) for basic_release_group in release_groups.get('release_groups'): load_entities_of_release_group(basic_release_group.get('id')) offset += 100 if offset > release_groups.get('release_group_count', 0): break