diff --git a/app/celery/scheduled_tasks.py b/app/celery/scheduled_tasks.py index 562e4422d..d5aaa27a8 100644 --- a/app/celery/scheduled_tasks.py +++ b/app/celery/scheduled_tasks.py @@ -240,6 +240,7 @@ def check_for_services_with_high_failure_rates_or_sending_to_tv_numbers(): @notify_celery.task(name="process-delivery-receipts") def process_delivery_receipts(): cloudwatch = AwsCloudwatchClient() + cloudwatch.init_app(current_app) start_time = utc_now() - timedelta(minutes=10) end_time = utc_now() receipts = cloudwatch.check_delivery_receipts(start_time, end_time) diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py index aa53877ea..825d13c5e 100644 --- a/app/clients/cloudwatch/aws_cloudwatch.py +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -7,7 +7,6 @@ from flask import current_app from app.clients import AWS_CLIENT_CONFIG, Client from app.cloudfoundry_config import cloud_config -from app.dao.notifications_dao import dao_update_delivery_receipts from app.utils import utc_now @@ -107,63 +106,60 @@ class AwsCloudwatchClient(Client): return logline return None + def check_delivery_receipts(self, start, end): + region = cloud_config.sns_region + account_number = self._extract_account_number(cloud_config.ses_domain_arn) -def check_delivery_receipts(self, start, end): - region = cloud_config.sns_region - account_number = self._extract_account_number(cloud_config.ses_domain_arn) + log_group_name = f"sns/{region}/{account_number[4]}/DirectPublishToPhoneNumber" + log_group_name_failed = ( + f"sns/{region}/{account_number[4]}/DirectPublishToPhoneNumber/Failed" + ) - log_group_name = f"sns/{region}/{account_number[4]}/DirectPublishToPhoneNumber" - log_group_name_failed = ( - f"sns/{region}/{account_number[4]}/DirectPublishToPhoneNumber/Failed" - ) + query = """ + fields @timestamp, status, delivery.providerResponse, delivery.destination, + notification.messageId, delivery.phoneCarrier + | sort @timestamp asc + """ - query = """ - fields @timestamp, status, delivery.providerResponse, delivery.destination, - notification.messageId, delivery.phoneCarrier - | sort @timestamp asc - """ + response = self._client.start_query( + logGroupName=log_group_name, + startTime=int(start.timestamp()), + endTime=int(end.timestamp()), + queryString=query, + ) + query_id = response["queryId"] + while True: + result = client._client.get_query_results(queryId=query_id) + if result["status"] == "Complete": + break + sleep(1) - response = client._client.start_query( - logGroupName=log_group_name, - startTime=int(start.timestamp()), - endTime=int(end.timestamp()), - queryString=query, - ) - query_id = response["queryId"] - while True: - result = client._client.get_query_results(queryId=query_id) - if result["status"] == "Complete": - break - sleep(1) + delivery_receipts = [] + for log in result["results"]: + receipt = {field["field"]: field["value"] for field in log} + delivery_receipts.append(receipt) + print(receipt) - delivery_receipts = [] - for log in result["results"]: - receipt = {field["field"]: field["value"] for field in log} - delivery_receipts.append(receipt) - print(receipt) + delivered = delivery_receipts - delivered = delivery_receipts + response = client._client.start_query( + logGroupName=log_group_name_failed, + startTime=int(start.timestamp()), + endTime=int(end.timestamp()), + queryString=query, + ) + query_id = response["queryId"] + while True: + result = client._client.get_query_results(queryId=query_id) + if result["status"] == "Complete": + break + sleep(1) - response = client._client.start_query( - logGroupName=log_group_name_failed, - startTime=int(start.timestamp()), - endTime=int(end.timestamp()), - queryString=query, - ) - query_id = response["queryId"] - while True: - result = client._client.get_query_results(queryId=query_id) - if result["status"] == "Complete": - break - sleep(1) + delivery_receipts = [] + for log in result["results"]: + receipt = {field["field"]: field["value"] for field in log} + delivery_receipts.append(receipt) + print(receipt) - delivery_receipts = [] - for log in result["results"]: - receipt = {field["field"]: field["value"] for field in log} - delivery_receipts.append(receipt) - print(receipt) - - failed = delivery_receipts - - dao_update_delivery_receipts(delivered) - dao_update_delivery_receipts(failed) + failed = delivery_receipts + return delivered + failed diff --git a/app/config.py b/app/config.py index e7f4af14d..d935b08b9 100644 --- a/app/config.py +++ b/app/config.py @@ -198,7 +198,7 @@ class Config(object): }, "process-delivery-receipts": { "task": "process-delivery-receipts", - "schedule": timedelta(minutes=8), + "schedule": timedelta(minutes=1), "options": {"queue": QueueNames.PERIODIC}, }, "expire-or-delete-invitations": {