简单易用的异步调节器

asyncio-throttle的Python项目详细描述


travis-cipypi-versionpypi-license

简单易用的异步节流器。

示例

importtimeimportrandomimportasynciofromasyncio_throttleimportThrottlerasyncdefworker(no,throttler,n):for_inrange(n):awaitasyncio.sleep(random.random()*2)asyncwiththrottler:print(time.time(),'Worker #%d: Bang!'%no)asyncdefmain():throttler=Throttler(rate_limit=5)tasks=[loop.create_task(worker(no,throttler,10))fornoinrange(5)]awaitasyncio.wait(tasks)loop=asyncio.get_event_loop()loop.run_until_complete(main())loop.close()

这里我把工作速度限制在5/秒,而有5个工人。

安装

$ pip install asyncio-throttle

用法

asyncio_throttle.Throttler引入了简单的api: flush()acquire()。但你不会对那些感兴趣 因为您可以在with语句中使用它,而且看起来更好。

首先,创建给定所需速率限制的节流器。 例如,如果要将速率限制为500/min,可以将其设置为:

fromasyncio_throttleimportThrottlerthrottler=Throttler(rate_limit=500,period=60)

那么每当你想做一些本应有限的工作时 速率(例如,向服务器发送请求),将其放入async with语句:

asyncwiththrottler:send_a_request()

就这么简单。asyncio_throttler很容易集成 与aiohttp一起:

asyncdefworker(throttler,session):whileTrue:asyncwiththrottler:asyncwithsession.get('http://example.com')asresp:do_some_job_with(awaitresp.text())awaitasyncio.sleep(0.05)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javascript为什么clearInterval不能在heroku中立即停止   java四舍五入到最近的四分之一   java jgrapht KruskalmiminSpanningTree检索边权重   java slf4j记录两种错误记录方法之间的差异(带和w/o Throwable)   java接口、注释和继承   在排序数组(Java)中查找整数出现界限的问题   带Hibernate的JavaPostgresJSONB   java有没有办法更改Lambda表达式中的值?   我想在安卓中使用java作为web服务器创建登录应用程序,并在不使用查询字符串的情况下用java传递控件值   java意外方法调用easymock   java通过导航内容URI导航到纬度、经度点?   java JGit签出与“git签出”问题   java使用Hibernate标准获取多个随机行   java如何创建自己的TypefiedElement   java实现可比较的接口作业   java VAADIN:具有重复文件名的StreamResource使用旧的StreamResource   使用java查找和执行文件的路径   数组如何在Java中捕获输出   递归JAVA递归程序逻辑   java提取标题、描述和h1使用jsoup形成url