Skip to main content

Call asynchronous functions of python 3 asyncio infrastructure from synchronous code

Project description

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.

Installation

pip3 install aioawait

Example

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

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

@coroutine
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)
        else:
            print('counting', name, n)
            yield

    # stops monitor
    m.cancel()

    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]))

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

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

if __name__ == '__main__':
    c = Counter()
    print(c.counter_a)
    print(c.counter_b)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioawait-3.tar.gz (2.9 kB view details)

Uploaded Source

File details

Details for the file aioawait-3.tar.gz.

File metadata

  • Download URL: aioawait-3.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for aioawait-3.tar.gz
Algorithm Hash digest
SHA256 65dd7d6554904fdf84613788655bec89af840d9ff6ad8bdb2b9085e52c7e70e8
MD5 e969b3d56f5053f6e4207c920d926662
BLAKE2b-256 15c9b40b368740e9dbf21506052631d6d03d66896169da5b92d7b4c289d1a9f6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page