From 3f9123856492939cb7ca264ed753105bc069042c Mon Sep 17 00:00:00 2001 From: Sanford Student <sstudent@edx.org> Date: Thu, 26 Apr 2018 11:05:40 -0400 Subject: [PATCH] rate limit --- cms/envs/aws.py | 3 +++ cms/envs/common.py | 3 +++ lms/djangoapps/grades/tasks.py | 3 ++- lms/envs/aws.py | 3 +++ lms/envs/common.py | 4 ++++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/cms/envs/aws.py b/cms/envs/aws.py index 16d0d262c93..4e4caaad6ee 100644 --- a/cms/envs/aws.py +++ b/cms/envs/aws.py @@ -437,6 +437,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 cea9c6aad9c..6cecd044111 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 2839834bbac..80ca5586c33 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 2d15044e070..f3f8a688aa7 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 c241714b1a8..84da8d61664 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 -- GitLab