mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-19 14:08:47 -04:00
Compare commits
2 Commits
devdocs_up
...
redis-tall
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d50d5b97fd | ||
|
|
d567d1529d |
12
README.md
12
README.md
@@ -61,10 +61,18 @@ export PATH=${PATH}:/Applications/Postgres.app/Contents/Versions/11/bin/
|
||||
|
||||
### Redis
|
||||
|
||||
To switch redis on you'll need to install it locally. On a OSX we've used brew for this. To use redis caching you need to switch it on by changing the config for development:
|
||||
You can run redis locally using
|
||||
|
||||
REDIS_ENABLED = True
|
||||
```
|
||||
brew install redis
|
||||
redis-server
|
||||
```
|
||||
|
||||
To get the API to use redis locally you need to change the config for development:
|
||||
|
||||
```
|
||||
REDIS_ENABLED = True
|
||||
```
|
||||
|
||||
## To run the application
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ class Config(object):
|
||||
|
||||
# URL of redis instance
|
||||
REDIS_URL = os.getenv('REDIS_URL')
|
||||
REDIS_ENABLED = os.getenv('REDIS_ENABLED') == '1'
|
||||
REDIS_ENABLED = True
|
||||
EXPIRE_CACHE_TEN_MINUTES = 600
|
||||
EXPIRE_CACHE_EIGHT_DAYS = 8 * 24 * 60 * 60
|
||||
|
||||
@@ -428,7 +428,7 @@ class Development(Config):
|
||||
NOTIFY_EMAIL_DOMAIN = "notify.tools"
|
||||
|
||||
SQLALCHEMY_DATABASE_URI = os.getenv('SQLALCHEMY_DATABASE_URI', 'postgresql://localhost/notification_api')
|
||||
REDIS_URL = 'redis://localhost:6379/0'
|
||||
REDIS_URL = os.getenv('REDIS_URL', 'redis://localhost:6379/0')
|
||||
|
||||
ANTIVIRUS_ENABLED = os.getenv('ANTIVIRUS_ENABLED') == '1'
|
||||
|
||||
|
||||
@@ -148,6 +148,7 @@ def persist_notification(
|
||||
# if simulated create a Notification model to return but do not persist the Notification to the dB
|
||||
if not simulated:
|
||||
dao_create_notification(notification)
|
||||
|
||||
if key_type != KEY_TYPE_TEST and current_app.config['REDIS_ENABLED']:
|
||||
cache_key = redis.daily_limit_cache_key(service.id)
|
||||
if redis_store.get(cache_key) is None:
|
||||
@@ -158,12 +159,37 @@ def persist_notification(
|
||||
redis_store.set(cache_key, 1, ex=86400)
|
||||
else:
|
||||
redis_store.incr(cache_key)
|
||||
|
||||
# sending may not always be true, check this
|
||||
cache_key = notification_count_cache_key(
|
||||
service.id, notification_created_at, notification_type, 'sending'
|
||||
)
|
||||
if redis_store.get(cache_key) is None:
|
||||
# if cache does not exist set the cache to 1 with an expiry of 8 days,
|
||||
# The cache should be set by the time we create the notification
|
||||
# but in case it is this will make sure the expiry is set to 8 days,
|
||||
# where if we let the incr method create the cache it will be set a ttl.
|
||||
# fix this comment as it might be missing a word?
|
||||
redis_store.set(cache_key, 1, ex=691200)
|
||||
else:
|
||||
redis_store.incr(cache_key)
|
||||
|
||||
current_app.logger.info(
|
||||
"{} {} created at {}".format(notification_type, notification_id, notification_created_at)
|
||||
)
|
||||
return notification
|
||||
|
||||
|
||||
def notification_count_cache_key(
|
||||
service_id, created_at_utc, notification_type, simplified_status
|
||||
):
|
||||
# this is not actually turning it in to bst, will need to fix this
|
||||
bst_date = created_at_utc.strftime("%Y-%m-%d")
|
||||
return "service-{}-bst-date-{}-{}-{}".format(
|
||||
str(service_id), bst_date, notification_type, simplified_status
|
||||
)
|
||||
|
||||
|
||||
def send_notification_to_queue_detached(
|
||||
key_type, notification_type, notification_id, research_mode, queue=None
|
||||
):
|
||||
|
||||
@@ -9,11 +9,13 @@ source environment.sh
|
||||
AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-"$(aws configure get aws_access_key_id)"}
|
||||
AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:-"$(aws configure get aws_secret_access_key)"}
|
||||
: "${SQLALCHEMY_DATABASE_URI:=postgresql://postgres@host.docker.internal/notification_api}"
|
||||
REDIS_URL="redis://host.docker.internal:6379"
|
||||
|
||||
docker run -it --rm \
|
||||
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
|
||||
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
|
||||
-e SQLALCHEMY_DATABASE_URI=$SQLALCHEMY_DATABASE_URI \
|
||||
-e REDIS_URL=$REDIS_URL \
|
||||
-v $(pwd):/home/vcap/app \
|
||||
${DOCKER_IMAGE_NAME} \
|
||||
${@}
|
||||
|
||||
Reference in New Issue
Block a user