Browse Source

chore(api): RateLimit with keyword instead of positiona args (#69221)

> _"The numbers, Mason! What do they mean?"_
> — Jason Hudson

Using keyword style of instantiating RateLimit dataclass, making it
immediately obvious what is the meaning of each value:

`RateLimit(123, 45, 67)` -> `RateLimit(limit=123, window=45,
concurrent_limit=67)`
Bartek Ogryczak 10 months ago
parent
commit
343f9ba64f

+ 3 - 3
src/sentry/api/endpoints/event_ai_suggested_fix.py

@@ -306,9 +306,9 @@ class EventAiSuggestedFixEndpoint(ProjectEndpoint):
     enforce_rate_limit = True
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(5, 1),
-            RateLimitCategory.USER: RateLimit(5, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 1),
+            RateLimitCategory.IP: RateLimit(limit=5, window=1),
+            RateLimitCategory.USER: RateLimit(limit=5, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=1),
         },
     }
 

+ 3 - 3
src/sentry/api/endpoints/group_ai_autofix.py

@@ -42,9 +42,9 @@ class GroupAiAutofixEndpoint(GroupEndpoint):
     enforce_rate_limit = True
     rate_limits = {
         "POST": {
-            RateLimitCategory.IP: RateLimit(5, 1),
-            RateLimitCategory.USER: RateLimit(5, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 1),
+            RateLimitCategory.IP: RateLimit(limit=5, window=1),
+            RateLimitCategory.USER: RateLimit(limit=5, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=1),
         }
     }
 

+ 9 - 9
src/sentry/api/endpoints/group_details.py

@@ -64,19 +64,19 @@ class GroupDetailsEndpoint(GroupEndpoint, EnvironmentMixin):
     enforce_rate_limit = True
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(5, 1),
-            RateLimitCategory.USER: RateLimit(5, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 1),
+            RateLimitCategory.IP: RateLimit(limit=5, window=1),
+            RateLimitCategory.USER: RateLimit(limit=5, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=1),
         },
         "PUT": {
-            RateLimitCategory.IP: RateLimit(5, 1),
-            RateLimitCategory.USER: RateLimit(5, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 1),
+            RateLimitCategory.IP: RateLimit(limit=5, window=1),
+            RateLimitCategory.USER: RateLimit(limit=5, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=1),
         },
         "DELETE": {
-            RateLimitCategory.IP: RateLimit(5, 5),
-            RateLimitCategory.USER: RateLimit(5, 5),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 5),
+            RateLimitCategory.IP: RateLimit(limit=5, window=5),
+            RateLimitCategory.USER: RateLimit(limit=5, window=5),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=5),
         },
     }
 

+ 3 - 3
src/sentry/api/endpoints/group_event_details.py

@@ -105,9 +105,9 @@ class GroupEventDetailsEndpoint(GroupEndpoint):
     enforce_rate_limit = True
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(15, 1),
-            RateLimitCategory.USER: RateLimit(15, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(15, 1),
+            RateLimitCategory.IP: RateLimit(limit=15, window=1),
+            RateLimitCategory.USER: RateLimit(limit=15, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=15, window=1),
         }
     }
 

+ 3 - 3
src/sentry/api/endpoints/group_first_last_release.py

@@ -16,9 +16,9 @@ class GroupFirstLastReleaseEndpoint(GroupEndpoint, EnvironmentMixin):
     enforce_rate_limit = True
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(5, 1),
-            RateLimitCategory.USER: RateLimit(5, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 1),
+            RateLimitCategory.IP: RateLimit(limit=5, window=1),
+            RateLimitCategory.USER: RateLimit(limit=5, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=1),
         }
     }
 

+ 3 - 3
src/sentry/api/endpoints/organization_eventid.py

@@ -22,9 +22,9 @@ class EventIdLookupEndpoint(OrganizationEndpoint):
     enforce_rate_limit = True
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(1, 1),
-            RateLimitCategory.USER: RateLimit(1, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(1, 1),
+            RateLimitCategory.IP: RateLimit(limit=1, window=1),
+            RateLimitCategory.USER: RateLimit(limit=1, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=1, window=1),
         }
     }
 

+ 3 - 3
src/sentry/api/endpoints/organization_group_index_stats.py

@@ -28,9 +28,9 @@ class OrganizationGroupIndexStatsEndpoint(OrganizationEndpoint):
 
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(10, 1),
-            RateLimitCategory.USER: RateLimit(10, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(10, 1),
+            RateLimitCategory.IP: RateLimit(limit=10, window=1),
+            RateLimitCategory.USER: RateLimit(limit=10, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=10, window=1),
         }
     }
 

+ 3 - 3
src/sentry/api/endpoints/organization_issues_count.py

@@ -31,9 +31,9 @@ class OrganizationIssuesCountEndpoint(OrganizationEndpoint):
     enforce_rate_limit = True
     rate_limits = {
         "GET": {
-            RateLimitCategory.IP: RateLimit(10, 1),
-            RateLimitCategory.USER: RateLimit(10, 1),
-            RateLimitCategory.ORGANIZATION: RateLimit(10, 1),
+            RateLimitCategory.IP: RateLimit(limit=10, window=1),
+            RateLimitCategory.USER: RateLimit(limit=10, window=1),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=10, window=1),
         }
     }
 

+ 3 - 3
src/sentry/api/endpoints/organization_member/requests/join.py

@@ -59,9 +59,9 @@ class OrganizationJoinRequestEndpoint(OrganizationEndpoint):
 
     rate_limits = {
         "POST": {
-            RateLimitCategory.IP: RateLimit(5, 86400),
-            RateLimitCategory.USER: RateLimit(5, 86400),
-            RateLimitCategory.ORGANIZATION: RateLimit(5, 86400),
+            RateLimitCategory.IP: RateLimit(limit=5, window=86400),
+            RateLimitCategory.USER: RateLimit(limit=5, window=86400),
+            RateLimitCategory.ORGANIZATION: RateLimit(limit=5, window=86400),
         }
     }
 

+ 2 - 2
src/sentry/api/endpoints/organization_metrics.py

@@ -282,7 +282,7 @@ class OrganizationMetricsDataEndpoint(OrganizationEndpoint):
     """
 
     # still 40 req/s but allows for bursts of 200 up to req/s for dashboard loading
-    default_rate_limit = RateLimit(200, 5)
+    default_rate_limit = RateLimit(limit=200, window=5)
 
     rate_limits = {
         "GET": {
@@ -361,7 +361,7 @@ class OrganizationMetricsQueryEndpoint(OrganizationEndpoint):
     """
 
     # still 40 req/s but allows for bursts of 200 up to req/s for dashboard loading
-    default_rate_limit = RateLimit(200, 5)
+    default_rate_limit = RateLimit(limit=200, window=5)
 
     rate_limits = {
         "POST": {

Some files were not shown because too many files changed in this diff