diff --git a/cms/envs/aws.py b/cms/envs/aws.py index 176da4edc8d8cf6da959b4142b66a1b34a9fd24e..51d247e790c9847f69c3aa80bc9f2d76775057bb 100644 --- a/cms/envs/aws.py +++ b/cms/envs/aws.py @@ -438,6 +438,9 @@ CELERY_QUEUES.update( # Queue to use for updating grades due to grading policy change POLICY_CHANGE_GRADES_ROUTING_KEY = ENV_TOKENS.get('POLICY_CHANGE_GRADES_ROUTING_KEY', LOW_PRIORITY_QUEUE) +# Rate limit for regrading tasks that a grading policy change can kick off +POLICY_CHANGE_TASK_RATE_LIMIT = ENV_TOKENS.get('POLICY_CHANGE_TASK_RATE_LIMIT', POLICY_CHANGE_TASK_RATE_LIMIT) + # Event tracking TRACKING_BACKENDS.update(AUTH_TOKENS.get("TRACKING_BACKENDS", {})) EVENT_TRACKING_BACKENDS['tracking_logs']['OPTIONS']['backends'].update(AUTH_TOKENS.get("EVENT_TRACKING_BACKENDS", {})) diff --git a/cms/envs/common.py b/cms/envs/common.py index cea9c6aad9cd35d2ab2e987c2ef7b0e92e464163..6cecd0441111cefffc88dcfaa7dfd8d719bedc60 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -1469,6 +1469,9 @@ RECALCULATE_GRADES_ROUTING_KEY = LOW_PRIORITY_QUEUE # Queue to use for updating grades due to grading policy change POLICY_CHANGE_GRADES_ROUTING_KEY = LOW_PRIORITY_QUEUE +# Rate limit for regrading tasks that a grading policy change can kick off +POLICY_CHANGE_TASK_RATE_LIMIT = '300/h' + ############## Settings for CourseGraph ############################ COURSEGRAPH_JOB_QUEUE = LOW_PRIORITY_QUEUE diff --git a/lms/djangoapps/grades/tasks.py b/lms/djangoapps/grades/tasks.py index 2839834bbaca6227b8d37e7283fddcecd68c07d4..80ca5586c33a0e411e279b4a5d4e7d198e3f7261 100644 --- a/lms/djangoapps/grades/tasks.py +++ b/lms/djangoapps/grades/tasks.py @@ -72,7 +72,8 @@ def compute_all_grades_for_course(**kwargs): base=LoggedPersistOnFailureTask, default_retry_delay=RETRY_DELAY_SECONDS, max_retries=1, - time_limit=COURSE_GRADE_TIMEOUT_SECONDS + time_limit=COURSE_GRADE_TIMEOUT_SECONDS, + rate_limit=settings.POLICY_CHANGE_TASK_RATE_LIMIT, ) def compute_grades_for_course_v2(self, **kwargs): """ diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 2d15044e070ae670d847b5c4957a4efa50ded43f..f3f8a688aa7bbb66079000ae24c9fcafd7bb2716 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -634,6 +634,9 @@ GRADES_DOWNLOAD_ROUTING_KEY = ENV_TOKENS.get('GRADES_DOWNLOAD_ROUTING_KEY', HIGH GRADES_DOWNLOAD = ENV_TOKENS.get("GRADES_DOWNLOAD", GRADES_DOWNLOAD) +# Rate limit for regrading tasks that a grading policy change can kick off +POLICY_CHANGE_TASK_RATE_LIMIT = ENV_TOKENS.get('POLICY_CHANGE_TASK_RATE_LIMIT', POLICY_CHANGE_TASK_RATE_LIMIT) + # financial reports FINANCIAL_REPORTS = ENV_TOKENS.get("FINANCIAL_REPORTS", FINANCIAL_REPORTS) diff --git a/lms/envs/common.py b/lms/envs/common.py index c241714b1a89f500091587e30f741d13d77df3fe..84da8d616646647a5514d52bb528b073f572e189 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -2620,6 +2620,10 @@ FINANCIAL_REPORTS = { 'ROOT_PATH': '/tmp/edx-s3/financial_reports', } +#### Grading policy change-related settings ##### +# Rate limit for regrading tasks that a grading policy change can kick off +POLICY_CHANGE_TASK_RATE_LIMIT = '300/h' + #### PASSWORD POLICY SETTINGS ##### PASSWORD_MIN_LENGTH = 8 PASSWORD_MAX_LENGTH = None