mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-11 15:52:21 -05:00
change the redis limit tracker to annual
This commit is contained in:
@@ -159,7 +159,14 @@ def process_row(row, template, job, service, sender_id=None):
|
|||||||
return notification_id
|
return notification_id
|
||||||
|
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
# Originally this was checking a daily limit
|
||||||
|
# It is now checking an overall limit (annual?) for the free tier
|
||||||
|
# Is there any limit for the paid tier?
|
||||||
|
# Assuming the limit is annual, is it calendar year, fiscal year, MOU year?
|
||||||
|
# Do we need a command to run to clear the redis value, or should it happen automatically?
|
||||||
def __total_sending_limits_for_job_exceeded(service, job, job_id):
|
def __total_sending_limits_for_job_exceeded(service, job, job_id):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
total_sent = check_service_over_total_message_limit(KeyType.NORMAL, service)
|
total_sent = check_service_over_total_message_limit(KeyType.NORMAL, service)
|
||||||
if total_sent + job.notification_count > service.total_message_limit:
|
if total_sent + job.notification_count > service.total_message_limit:
|
||||||
|
|||||||
@@ -45,10 +45,17 @@ def check_service_over_total_message_limit(key_type, service):
|
|||||||
|
|
||||||
cache_key = total_limit_cache_key(service.id)
|
cache_key = total_limit_cache_key(service.id)
|
||||||
service_stats = redis_store.get(cache_key)
|
service_stats = redis_store.get(cache_key)
|
||||||
|
|
||||||
|
## Originally this was a daily limit check. It is now a free-tier limit check.
|
||||||
|
## TODO is this annual or forever for each service?
|
||||||
|
## TODO do we need a way to clear this out? How do we determine if it is
|
||||||
|
## free-tier or paid? What are the limits for paid? Etc.
|
||||||
|
## TODO
|
||||||
|
## setting expiration to one year for now on the assume that the free tier
|
||||||
|
## limit resets annually.
|
||||||
if service_stats is None:
|
if service_stats is None:
|
||||||
# first message of the day, set the cache to 0 and the expiry to 24 hours
|
|
||||||
service_stats = 0
|
service_stats = 0
|
||||||
redis_store.set(cache_key, service_stats, ex=86400)
|
redis_store.set(cache_key, service_stats, ex=365*24*60*60)
|
||||||
return service_stats
|
return service_stats
|
||||||
if int(service_stats) >= service.total_message_limit:
|
if int(service_stats) >= service.total_message_limit:
|
||||||
current_app.logger.warning(
|
current_app.logger.warning(
|
||||||
|
|||||||
25
migrations/versions/0414_change_total_message_limit.py
Normal file
25
migrations/versions/0414_change_total_message_limit.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
"""
|
||||||
|
|
||||||
|
Revision ID: 0414_change_total_message_limit
|
||||||
|
Revises: 413_add_message_id
|
||||||
|
Create Date: 2025-01-23 11:35:22.873930
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
down_revision = "0413_add_message_id"
|
||||||
|
revision = "0414_change_total_message_limit"
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
"""
|
||||||
|
This limit is only used
|
||||||
|
"""
|
||||||
|
op.execute("UPDATE services set total_message_limit=100000")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.execute("UPDATE services set total_message_limit=250000")
|
||||||
Reference in New Issue
Block a user