request_rate.py 995 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """Initialize this class to define request-rates for limiter
  4. """
  5. from enum import Enum
  6. from .exceptions import ImmutableClassProperty
  7. class ResetTypes(Enum):
  8. SCHEDULED = 1
  9. INTERVAL = 2
  10. class RequestRate(object):
  11. def __init__(
  12. self,
  13. limit,
  14. interval,
  15. reset = ResetTypes.INTERVAL):
  16. self._limit = limit
  17. self._interval = interval
  18. self._reset = reset
  19. self._log = {}
  20. @property
  21. def limit(self):
  22. return self._limit
  23. @limit.setter
  24. def limit(self, _):
  25. raise ImmutableClassProperty(self, "limit")
  26. @property
  27. def interval(self):
  28. return self._interval
  29. @interval.setter
  30. def interval(self, _):
  31. raise ImmutableClassProperty(self, "interval")
  32. def __str__(self):
  33. return "{limit}/{interval}".format(limit = self.limit, interval = self.interval)