hellysmile / async_armor

Graceful drop-in replacement for asyncio.shield

Home Page:https://pypi.python.org/pypi/async_armor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

async_armor

info:Graceful drop-in replacement for asyncio.shield

Installation

pip install async_armor

Usage

import asyncio

from async_armor import armor

calls = 0

async def call_shield():
    global calls
    await asyncio.sleep(1)
    calls += 1

@armor
async def call_deco():
    global calls
    await asyncio.sleep(1)
    calls += 1

async def main():
    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())

assert calls == 2

loop.close()

Python 3.3+ is required

About

Graceful drop-in replacement for asyncio.shield

https://pypi.python.org/pypi/async_armor

License:MIT License


Languages

Language:Python 100.0%