dhcpkit.ipv6.server.extensions.rate_limit.manager module¶
A custom manager that manages the shared rate limit counters
-
class
dhcpkit.ipv6.server.extensions.rate_limit.manager.
RateLimitCounters
(rate: int, per: int, burst: int = None)[source]¶ Bases:
object
Counters for rate limiting of DHCPv6 requests
-
check_request
(key: str) → bool[source]¶ Check whether this request is within limits. This method uses the algorithm described on http://stackoverflow.com/questions/667508/whats-a-good-rate-limiting-algorithm#668327
Parameters: key – The key for this client Returns: Whether we should allow this
-
-
class
dhcpkit.ipv6.server.extensions.rate_limit.manager.
RateLimitManager
(address=None, authkey=None, serializer='pickle', ctx=None)[source]¶ Bases:
multiprocessing.managers.BaseManager
A custom manager that manages the shared rate limit counters
-
RateLimitCounters
(*args, **kwds)¶
-
-
dhcpkit.ipv6.server.extensions.rate_limit.manager.
init_manager_process
(parent_logger, initializer=None, initargs=())[source]¶ Migrate the logger of the parent to the child. It will be a queue logger anyway.
Parameters: - parent_logger – The logger from the parent
- initializer – Optional extra initializer
- initargs – Optional initializer arguments