Agregando jobs para rellenar el cache de datos

This commit is contained in:
Daniel Cortes
2020-06-08 05:11:34 -04:00
parent fce2072f82
commit 54d18f0d76
3 changed files with 51 additions and 2 deletions

39
fetcher/jobs.py Normal file
View File

@@ -0,0 +1,39 @@
"""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