Scheduled task to call the timeout function

This commit is contained in:
Martyn Inglis
2017-05-11 15:22:57 +01:00
parent b519321798
commit 8818bd5dba
2 changed files with 18 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ from app.dao.notifications_dao import (
dao_timeout_notifications, dao_timeout_notifications,
is_delivery_slow_for_provider 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 ( from app.dao.provider_details_dao import (
get_current_provider, get_current_provider,
dao_toggle_sms_provider dao_toggle_sms_provider
@@ -180,3 +181,12 @@ def switch_current_sms_provider_on_slow_delivery():
) )
dao_toggle_sms_provider(current_provider.identifier) 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))

View File

@@ -5,7 +5,7 @@ from functools import partial
from flask import current_app from flask import current_app
from freezegun import freeze_time 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 import scheduled_tasks
from app.celery.scheduled_tasks import ( from app.celery.scheduled_tasks import (
delete_verify_codes, 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() switch_current_sms_provider_on_slow_delivery()
current_provider = get_current_provider('sms') current_provider = get_current_provider('sms')
assert starting_provider.identifier == current_provider.identifier 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)