skip to navigation
skip to content

aioawait 8

Call asynchronous functions of Python 3.4.3 asyncio infrastructure from synchronous code

This package implements two primitives (await and spawn) on top of asyncio infrastructure of Python 3. This two functions allow us to call asynchronous functions from synchronous code.


pip3 install aioawait


from asyncio.tasks import coroutine, sleep, async
from aioawait import await, spawn

def monitor(name, size, total):
    while True:
        print('\ttotal', name, total)
        yield from sleep(1)

def counter(name, size, total):
    """sums into total all numbers from 0 to size"""
    m = async(monitor(name, size, total))

    # monitor could be called using spawn. eg:
    # m = spawn(monitor(name, size, total))

    for n in range(size):
        total[0] += n
        if n % 5 == 0:
            print('sleeping', name, n)
            yield from sleep(2)
            print('counting', name, n)

    # stops monitor

    return name, 'done', n, total

class Counter:
    """note that this class has no asynchronous code"""

    def __init__(self):
        self.cb = spawn(counter('b', 40, [0]))

    def counter_a(self):
        return await(counter('a', 20, [0]))

    def counter_b(self):
        return await(self.cb)

if __name__ == '__main__':
    c = Counter()
File Type Py Version Uploaded on Size
aioawait-8.tar.gz (md5) Source 2015-03-19 3KB