简单的python速率限制对象
ratelimiter的Python项目详细描述
提供速率限制的简单python模块。
概述
这个包提供ratelimiter模块,它确保 操作在 给定的时间段。在使用第三方api时,这可能会证明是有用的 这需要例如每秒最多10个请求。
用法
装潢师
fromratelimiterimportRateLimiter@RateLimiter(max_calls=10,period=1)defdo_something():pass
上下文管理器
fromratelimiterimportRateLimiterrate_limiter=RateLimiter(max_calls=10,period=1)foriinrange(100):withrate_limiter:do_something()
回拨
回调是在它自己的线程中调用的,因此回调可以使用 sleep不延迟速率限制。
importtimefromratelimiterimportRateLimiterdeflimited(until):duration=int(round(until-time.time()))print('Rate limited, sleeping for {:d} seconds'.format(duration))rate_limiter=RateLimiter(max_calls=2,period=3,callback=limited)foriinrange(3):withrate_limiter:print('Iteration',i)
输出:
Iteration 0 Iteration 1 Rate limited, sleeping for 3 seconds Iteration 2
异步
RateLimiter对象可以在上的async with语句中使用 python 3.5+。注意,在这个上下文中,回调必须是一个协程。 协同程序回调不在单独的线程中调用。
importasyncioimporttimefromratelimiterimportRateLimiterasyncdeflimited(until):duration=int(round(until-time.time()))print('Rate limited, sleeping for {:d} seconds'.format(duration))asyncdefcoro():rate_limiter=RateLimiter(max_calls=2,period=3,callback=limited)foriinrange(3):asyncwithrate_limiter:print('Iteration',i)loop=asyncio.get_event_loop()loop.run_until_complete(coro())
许可证
原著版权所有2013 Arnaud Porterie
修改作品版权所有2016 Frazer McLean
根据apache许可证2.0版(以下简称“许可证”)授权;您可以 除非符合许可证,否则不要使用此文件。你可以获得 在
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。
推荐PyPI第三方库
- 热门话题
- java如何在表被注释到配置之前获取表的元数据? java滚动条不会出现在JList上 java JOGL监视器GPU内存 java为什么要使用RecyclerView onDraw延迟 java定制Oppo Reno 2 Z CPH1951(手机型号)的固件(闪存文件) java自定义线程池执行器 java如何解决发布版本中重复的jar条目[com/安卓/volley/R.class]? java如何使用Bukkit API触发事件? java在blazemeter jmeter RTE插件中使用ctrl+w输入 C#/Visual Studio的java JDT等价物 java为什么当maxread值很大而收到的消息数量很小时,卡夫卡消费者会无限期消费? java游戏2。x:包含模板列表的绑定模型 带压缩的java日志旋转 运行时。exec用java运行程序读取它正在做什么