Asyncio.Shield的替换
async_armor的Python项目详细描述
info: | Graceful drop-in replacement for asyncio.shield |
---|
安装
pip install async_armor
用法
importasynciofromasync_armorimportarmorcalls=0asyncdefcall_shield():globalcallsawaitasyncio.sleep(1)calls+=1@armorasyncdefcall_deco():globalcallsawaitasyncio.sleep(1)calls+=1asyncdefmain():task=armor(call_shield())task.cancel()task=asyncio.ensure_future(call_deco())task.cancel()loop=asyncio.get_event_loop()loop.run_until_complete(main())armor.close()loop.run_until_complete(armor.wait_closed())assertcalls==2loop.close()
python 3.3+是必需的