diff --git a/app/__init__.py b/app/__init__.py index 165a8b884..e027145f2 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -15,6 +15,7 @@ from app.clients.sms.firetext import FiretextClient from app.clients.sms.loadtesting import LoadtestingClient from app.clients.email.aws_ses import AwsSesClient from app.clients.statsd.statsd_client import StatsdClient +from app.clients.redis.redis_client import RedisClient from app.encryption import Encryption @@ -30,6 +31,7 @@ mmg_client = MMGClient() aws_ses_client = AwsSesClient() encryption = Encryption() statsd_client = StatsdClient() +redis_client = RedisClient() clients = Clients() @@ -48,6 +50,7 @@ def create_app(app_name=None): db.init_app(application) ma.init_app(application) statsd_client.init_app(application) + redis_client.init_app(application) logging.init_app(application, statsd_client) firetext_client.init_app(application, statsd_client=statsd_client) loadtest_client.init_app(application, statsd_client=statsd_client) diff --git a/app/clients/redis/__init__.py b/app/clients/redis/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/app/clients/redis/redis_client.py b/app/clients/redis/redis_client.py new file mode 100644 index 000000000..6b309d43a --- /dev/null +++ b/app/clients/redis/redis_client.py @@ -0,0 +1,22 @@ +import redis + + +class RedisClient: + def init_app(self, app, *args, **kwargs): + self.active = app.config.get('REDIS_ENABLED') + self.redis = None + + if self.active: + self.redis = redis.StrictRedis( + app.config.get('REDIS_HOST'), + app.config.get('REDIS_PORT') + ) + + def set(self, key, value): + self.redis.set(key, value) + + def get(self, key): + return self.redis.get(key) + + def incr(self, key): + return self.redis.incr(key) diff --git a/app/notifications/rest.py b/app/notifications/rest.py index b2e49bd51..37203bda9 100644 --- a/app/notifications/rest.py +++ b/app/notifications/rest.py @@ -44,6 +44,8 @@ from app.errors import ( InvalidRequest ) +from app import redis_client + register_errors(notifications) @@ -204,6 +206,9 @@ def get_notification_statistics_for_day(): @notifications.route('/notifications/', methods=['POST']) def send_notification(notification_type): + + current_app.logger.info(redis_client.incr(api_user.service_id)) + if notification_type not in ['sms', 'email']: assert False diff --git a/config.py b/config.py index 2b5000eae..873caa4df 100644 --- a/config.py +++ b/config.py @@ -132,6 +132,10 @@ class Config(object): STATSD_HOST = "statsd.hostedgraphite.com" STATSD_PORT = 8125 + REDIS_ENABLED = True + REDIS_HOST = "localhost" + REDIS_PORT = 6379 + SENDING_NOTIFICATIONS_TIMEOUT_PERIOD = 259200 SIMULATED_EMAIL_ADDRESSES = ('simulate-delivered@notifications.service.gov.uk', diff --git a/requirements.txt b/requirements.txt index a71037824..8f8541b59 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ celery==3.1.23 monotonic==1.2 statsd==3.2.1 jsonschema==2.5.1 +redis==2.10.5 git+https://github.com/alphagov/notifications-python-client.git@1.3.0#egg=notifications-python-client==1.3.0