diff --git a/app/celery/tasks.py b/app/celery/tasks.py index fc50e4e0c..c4ea9731f 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -265,22 +265,26 @@ def persist_letter( @notify_celery.task(bind=True, name="build-dvla-file", max_retries=15, default_retry_delay=300) @statsd(namespace="tasks") def build_dvla_file(self, job_id): - if all_notifications_are_created_for_job(job_id): - notifications = dao_get_all_notifications_for_job(job_id) - file = "" - for n in notifications: - t = {"content": n.template.content, "subject": n.template.subject} - # This unique id is a 7 digits requested by DVLA, not known if this number needs to be sequential. - unique_id = int(''.join(map(str, random.sample(range(9), 7)))) - template = LetterDVLATemplate(t, n.personalisation, unique_id) - file = file + str(template) + "\n" - s3upload(filedata=file, - region=current_app.config['AWS_REGION'], - bucket_name=current_app.config['DVLA_UPLOAD_BUCKET_NAME'], - file_location="{}-dvla-job.text".format(job_id)) - else: - current_app.logger.info("All notifications for job {} are not persisted".format(job_id)) - self.retry(queue="retry", exc="All notifications for job {} are not persisted".format(job_id)) + try: + if all_notifications_are_created_for_job(job_id): + notifications = dao_get_all_notifications_for_job(job_id) + file = "" + for n in notifications: + t = {"content": n.template.content, "subject": n.template.subject} + # This unique id is a 7 digits requested by DVLA, not known if this number needs to be sequential. + unique_id = int(''.join(map(str, random.sample(range(9), 7)))) + template = LetterDVLATemplate(t, n.personalisation, unique_id) + file = file + str(template) + "\n" + s3upload(filedata=file, + region=current_app.config['AWS_REGION'], + bucket_name=current_app.config['DVLA_UPLOAD_BUCKET_NAME'], + file_location="{}-dvla-job.text".format(job_id)) + else: + current_app.logger.info("All notifications for job {} are not persisted".format(job_id)) + self.retry(queue="retry", exc="All notifications for job {} are not persisted".format(job_id)) + except Exception as e: + current_app.logger.exception("build_dvla_file threw exception") + raise e def s3upload(filedata, region, bucket_name, file_location):