实现令牌桶算法的速率限制异步和线程安全的装饰器和上下文管理器。
limiter的Python项目详细描述
限制器
实现令牌桶算法的速率限制线程安全、异步装饰器和上下文管理器。
- 线程安全,不需要计时器线程
- 控制突发请求
- 控制平均请求速率
- 易于使用
安装
要求
- Python3.7+
从pypi安装
pip3 install limiter
用法
fromasyncioimportsleepfromrequestsimportget,Responsefromlimiterimportget_limiter,limitREFRESH_RATE=2BURST_RATE=3limiter=get_limiter(rate=REFRESH_RATE,capacity=BURST_RATE)@limit(limiter)defget_page(url:str)->Response:returnget(url)@limit(limiter,consume=2)asyncdefdo_stuff():awaitsleep(0.1)defdo_stuff():# do stuffwithlimit(limiter,consume=1.5):# do expensive stuffpassasyncdefdo_stuff():# do stuffasyncwithlimit(limiter):# do expensive stuffpass@limit(limiter,bucket=b'other stuff')defdo_other_stuff():pass