diff --git a/app/celery/provider_tasks.py b/app/celery/provider_tasks.py index 011b00d98..9165fe37b 100644 --- a/app/celery/provider_tasks.py +++ b/app/celery/provider_tasks.py @@ -19,7 +19,7 @@ from app.dao.notifications_dao import ( from app.delivery import send_to_providers from app.enums import NotificationStatus from app.exceptions import NotificationTechnicalFailureException -from app.utils import utc_now +from app.utils import hilite, utc_now # This is the amount of time to wait after sending an sms message before we check the aws logs and look for delivery # receipts @@ -170,7 +170,7 @@ def deliver_sms(self, notification_id): @notify_celery.task( - bind=True, name="deliver_email", max_retries=48, default_retry_delay=300 + bind=True, name="deliver_email", max_retries=48, default_retry_delay=30 ) def deliver_email(self, notification_id): try: @@ -182,9 +182,15 @@ def deliver_email(self, notification_id): if not notification: raise NoResultFound() personalisation = redis_store.get(f"email-personalisation-{notification_id}") + recipient = redis_store.get(f"email-recipient-{notification_id}") + if personalisation: + notification.personalisation = json.loads(personalisation) + if recipient: + notification.recipient = json.loads(recipient) - notification.personalisation = json.loads(personalisation) - send_to_providers.send_email_to_provider(notification) + print(hilite(f"HERE IS THE NOTIFICATION {notification.serialize_for_csv()}")) + if recipient: + send_to_providers.send_email_to_provider(notification) except EmailClientNonRetryableException: current_app.logger.exception(f"Email notification {notification_id} failed") update_notification_status_by_id(notification_id, "technical-failure") diff --git a/app/service/sender.py b/app/service/sender.py index 4b954f60b..4661dbb9b 100644 --- a/app/service/sender.py +++ b/app/service/sender.py @@ -1,5 +1,8 @@ +import json + from flask import current_app +from app import redis_store from app.config import QueueNames from app.dao.services_dao import ( dao_fetch_active_users_for_service, @@ -40,7 +43,17 @@ def send_notification_to_service_users( key_type=KeyType.NORMAL, reply_to_text=notify_service.get_default_reply_to_email_address(), ) + redis_store.set( + f"email-personalisation-{notification.id}", + json.dumps(personalisation), + ex=24 * 60 * 60, + ) + redis_store.set( + f"email-recipient-{notification.id}", notification.to, ex=24 * 60 * 60 + ) + send_notification_to_queue(notification, queue=QueueNames.NOTIFY) + return notification def _add_user_fields(user, personalisation, fields):