File tree Expand file tree Collapse file tree
xbox/webapi/common/ratelimits Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -131,9 +131,14 @@ def get_counter(self) -> int:
131131 # Return the highest value
132132 return counters [0 ]
133133
134+ # We don't want a datetime response for a limit that has not been exceeded.
135+ # Otherwise eg. 10 burst requests -> 300s timeout (should be 30 (burst exceeded), 300s (not exceeded)
134136 def get_reset_after (self ) -> Union [datetime , None ]:
137+ # Get a list of limits that *have been exceeded*
138+ dates_exceeded_only = filter (lambda limit : limit .is_exceeded (), self .__limits )
139+
135140 # Map self.__limits to (limit).get_reset_after()
136- dates_map = map (lambda limit : limit .get_reset_after (), self . __limits )
141+ dates_map = map (lambda limit : limit .get_reset_after (), dates_exceeded_only )
137142
138143 # Convert the map object to a list
139144 dates = list (dates_map )
@@ -143,6 +148,7 @@ def get_reset_after(self) -> Union[datetime, None]:
143148 dates_valid = [elem for elem in dates if type (elem ) == datetime ]
144149
145150 # If dates_valid has any elements, return the one with the *later* timestamp.
151+ # This means that if two or more limits have been exceeded, we wait for both to have reset (by returning the later timestamp)
146152 if len (dates_valid ) != 0 :
147153 dates_valid [0 ].isoformat
148154 print (
You can’t perform that action at this time.
0 commit comments