Skip to content
Snippets Groups Projects
Unverified Commit ccd966a5 authored by Christopher Lee's avatar Christopher Lee Committed by GitHub
Browse files

Merge pull request #18212 from edx/clee/remove-throttle

Clean up enrollment rate limit waffles
parents fca9ac10 1310e2f1
Branches
Tags release-2020-11-09-18.01
No related merge requests found
"""
Enrollment API helpers and settings
"""
from openedx.core.djangoapps.waffle_utils import (WaffleFlag, WaffleFlagNamespace)
WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name='enrollment_api_rate_limit')
REDUCE_RATE_LIMIT_FOR_STAFF_FOR_ENROLLMENT_API = WaffleFlag(WAFFLE_FLAG_NAMESPACE, 'reduce_staff_rate_limit')
USE_UNIVERSAL_RATE_LIMIT_FOR_ENROLLMENT_API = WaffleFlag(WAFFLE_FLAG_NAMESPACE, 'use_universal_rate_limit')
...@@ -12,8 +12,6 @@ from django.utils.decorators import method_decorator ...@@ -12,8 +12,6 @@ from django.utils.decorators import method_decorator
from edx_rest_framework_extensions.authentication import JwtAuthentication from edx_rest_framework_extensions.authentication import JwtAuthentication
from enrollment import api from enrollment import api
from enrollment.errors import CourseEnrollmentError, CourseEnrollmentExistsError, CourseModeNotFoundError from enrollment.errors import CourseEnrollmentError, CourseEnrollmentExistsError, CourseModeNotFoundError
from enrollment import REDUCE_RATE_LIMIT_FOR_STAFF_FOR_ENROLLMENT_API, \
USE_UNIVERSAL_RATE_LIMIT_FOR_ENROLLMENT_API
from opaque_keys import InvalidKeyError from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
...@@ -78,28 +76,7 @@ class ApiKeyPermissionMixIn(object): ...@@ -78,28 +76,7 @@ class ApiKeyPermissionMixIn(object):
class EnrollmentUserThrottle(UserRateThrottle, ApiKeyPermissionMixIn): class EnrollmentUserThrottle(UserRateThrottle, ApiKeyPermissionMixIn):
"""Limit the number of requests users can make to the enrollment API.""" """Limit the number of requests users can make to the enrollment API."""
# TODO: After confirming that reducing the throttle is successful, remove rate = '40/minute'
# and clean up waffles. The rate limit has been increased over the course
# of a few months to account for unnecessary calls from the ecommerce
# service. These calls are no longer made and the plan is to set the
# rate limit back to its original state. LEARNER-5148
# Current rate limit
THROTTLE_RATES = {
'user': '40/minute',
'staff': '2000/minute',
}
# Less aggressive reduction in throttle limit. This should not be necessary
if REDUCE_RATE_LIMIT_FOR_STAFF_FOR_ENROLLMENT_API.is_enabled():
THROTTLE_RATES = {
'user': '40/minute',
'staff': '400/minute',
}
# Original rate Limit before rate limit increases.
if USE_UNIVERSAL_RATE_LIMIT_FOR_ENROLLMENT_API.is_enabled():
rate = '40/minute'
def allow_request(self, request, view): def allow_request(self, request, view):
# Use a special scope for staff to allow for a separate throttle rate # Use a special scope for staff to allow for a separate throttle rate
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment