token-bucket icon indicating copy to clipboard operation
token-bucket copied to clipboard

Allow user to override the Limiter subclass check

Open Cyberes opened this issue 2 years ago • 1 comments

I added the arg ignore_subclass to Limiter to enable the user to skip the storage must be a subclass of StorageBase check.

Here is my use-case:

from multiprocessing.managers import BaseManager
from token_bucket import Limiter, MemoryStorage

class LimiterManager(BaseManager):
    pass

LimiterManager.register('Limiter', Limiter)
LimiterManager.register('MemoryStorage', MemoryStorage)

manager = LimiterManager()
manager.start()

self.manager.Limiter(rate=max_requests_per_second, capacity=max_requests_per_second, storage=self.manager.MemoryStorage(), ignore_subclass=True)

As you can see, I am using multiprocessing's BaseManager to share the Limiter and MemoryStorage objects with multiprocessing.Process() processes. Without ignore_subclass, the subclass check fails.

Cyberes avatar Jul 28 '23 04:07 Cyberes

Codecov Report

Merging #27 (4d4a52f) into master (4d94f64) will not change coverage. The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #27   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            5         5           
  Lines           67        67           
  Branches        10        10           
=========================================
  Hits            67        67           
Files Changed Coverage Δ
token_bucket/limiter.py 100.00% <100.00%> (ø)

codecov-commenter avatar Jul 28 '23 05:07 codecov-commenter