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)
Release files for aioawait 7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aioawait-7.tar.gz | 3.1 kB | Details |
Release files / aioawait-7.tar.gz
| Download URL | aioawait-7.tar.gz |
|---|---|
| Size | 3.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
277032d9964692a62bdcd640d167d527e8b73b085eac5168ff519f11786142a3
|
|
BLAKE2b-256 checksum How to use checksums |
53a6494f6339d3eb8bf584acdebe8a488c55a9f43e7bca7d1982db0054ba5bd7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |