diff --git a/app/celery/scheduled_tasks.py b/app/celery/scheduled_tasks.py index b76122819..3acdd5341 100644 --- a/app/celery/scheduled_tasks.py +++ b/app/celery/scheduled_tasks.py @@ -16,6 +16,7 @@ from app.dao.notifications_dao import ( dao_timeout_notifications, is_delivery_slow_for_provider ) +from app.dao.statistics_dao import timeout_job_statistics as dao_timeout_job_statistics from app.dao.provider_details_dao import ( get_current_provider, dao_toggle_sms_provider @@ -180,3 +181,12 @@ def switch_current_sms_provider_on_slow_delivery(): ) dao_toggle_sms_provider(current_provider.identifier) + + +@notify_celery.task(name='timeout-job-statistics') +@statsd(namespace="tasks") +def timeout_job_statistics(): + updated = dao_timeout_job_statistics(current_app.config.get('SENDING_NOTIFICATIONS_TIMEOUT_PERIOD')) + if updated: + current_app.logger.info( + "Timeout period reached for {} job statistics, failure count has been updated.".format(updated)) diff --git a/tests/app/celery/test_scheduled_tasks.py b/tests/app/celery/test_scheduled_tasks.py index 038d2ca1c..50bf5f982 100644 --- a/tests/app/celery/test_scheduled_tasks.py +++ b/tests/app/celery/test_scheduled_tasks.py @@ -5,7 +5,7 @@ from functools import partial from flask import current_app from freezegun import freeze_time -from app.celery.scheduled_tasks import s3 +from app.celery.scheduled_tasks import s3, timeout_job_statistics from app.celery import scheduled_tasks from app.celery.scheduled_tasks import ( delete_verify_codes, @@ -409,3 +409,10 @@ def test_switch_providers_on_slow_delivery_does_not_switch_based_on_older_notifi switch_current_sms_provider_on_slow_delivery() current_provider = get_current_provider('sms') assert starting_provider.identifier == current_provider.identifier + + +def test_timeout_job_statistics_called_with_notification_timeout(notify_api, mocker): + notify_api.config['SENDING_NOTIFICATIONS_TIMEOUT_PERIOD'] = 999 + dao_mock = mocker.patch('app.celery.scheduled_tasks.dao_timeout_job_statistics') + timeout_job_statistics() + dao_mock.assert_called_once_with(999)