Throttling checks are now lazy.

This commit is contained in:
pablo 2020-12-26 20:25:56 +01:00
parent 2a9483981e
commit d136144a4e

View file

@ -147,12 +147,9 @@ class ThrottleManager:
:return: True if all rules passed positively, False otherwise :return: True if all rules passed positively, False otherwise
""" """
check_results = self._check_all_rules(**kwargs) check_result = self._check_all_rules(**kwargs)
if not all(check_results): return check_result
return False
return True
def add_rule( def add_rule(
self, rule: BaseThrottlingRule, required_argument_names: List[str] = None self, rule: BaseThrottlingRule, required_argument_names: List[str] = None
@ -172,12 +169,12 @@ class ThrottleManager:
return self return self
def _check_all_rules(self, **kwargs) -> List[bool]: def _check_all_rules(self, **kwargs) -> bool:
""" """
Executes all checks with the right arguments for each of them and Executes checks (lazily) with the right arguments for each of them and
collects results. collects results.
:param kwargs: all passed arguments :param kwargs: all passed arguments
:return: the result of each individual check :return: True if all checks passed, False otherwise
""" """
checks = [] checks = []
@ -187,6 +184,7 @@ class ThrottleManager:
for argument_name in self._rules_and_required_arguments[rule.__class__] for argument_name in self._rules_and_required_arguments[rule.__class__]
} }
checks.append(rule(**arguments_for_rule)) checks.append(rule(**arguments_for_rule))
continue if checks[-1] == False:
return False
return checks return True