import traceback from utils.list_utils import chunks from workers.artist_moment_worker import ArtistMomentWorker, ArtistBindingModel from utils.reporting.worker_logger import WorkerLogger from services.artists_repository import ArtistsRepository from datetime import datetime class BatchMomentsImporter: logger: WorkerLogger = WorkerLogger() artists_repository: ArtistsRepository = ArtistsRepository() def import_moments(self): self.logger.info("Import started", f"GRAS moments import started at {datetime.now()}") mapped_artists = [ ArtistBindingModel(decibel_id=artist.id, external_id=artist.external_id) for artist in self.artists_repository.get_all_primary_artists() ] try: for artists_chunk in chunks(mapped_artists, 500): ArtistMomentWorker().perform_async(artists_chunk) except Exception as error: self.logger.error("Import error", f"{error}\n{traceback.format_exc()}") self.logger.info("Import finished", f"GRAS moments import finished at {datetime.now()}")