asy
asy is easy and powerful supervisor for asyncio.
Motivation for development
- Simple cancellation
- Improve the coordination of async functions between libraries
- No more programs for execution management
- Develop specifications like ASGI
Requirement
- Python 3.8+
Installation
pip install asy
Getting started
Create functions in example.py:
All you have to do is say the magic word token, and you can handle the function's lifetime at will.
import asyncio
# cancelable infinity loop
async def func1(token):
while not token.is_cancelled:
await asyncio.sleep(1)
return "complete func1."
# uncancelable limited loop
async def func2(token):
for i in range(10):
await asyncio.sleep(1)
return f"complete func2. result: {i}"
# force cancel infinity loop
async def func3():
while True:
await asyncio.sleep(1)
return "complete func3. unreachable code."
# uncancelable limited loop
def func4():
for i in range(1000):
...
return f"complete func4. result: {i}"
# from callable
class YourDeamon:
def __init__(self, value):
self.value = value
async def __call__(self, token):
value = self.value
while not token.is_cancelled:
await asyncio.sleep(1)
return f"complete func5. result: {value}"
func5 = YourDeamon(1)
# Do not run
# infinity loop
# async def func5():
# while True:
# print("waiting")
Run in shell.
python3 -m asy example:func1 example:func2 example:func3 example:func4 example:func5
Run in Python script.
import asy
from example import func1, func2, func3, func4, func5
supervisor = asy.supervise(func1, func2, func3, func4, func5)
supervisor.run()
# or
asy.run(func1, func2, func3, func4, func5)
Let's end the daemon with Ctrl-C and enjoy asy!
Caution
asy is a beta version. Please do not use it in production.
Metadata
Release files for asy 0.0.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 | |
|---|---|---|---|
| asy-0.0.7.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| asy-0.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.2 kB
Release files / asy-0.0.7.tar.gz
| Download URL | asy-0.0.7.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
129225e1ac395dcbb89dfa204912444bb0048149c3ac5535650683529689d6de
|
|
BLAKE2b-256 checksum How to use checksums |
14bf122090ec0d3fdee85947e1ac27363113f97e932b2e41e4e89affbdee2941
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.8 CPython/3.8.5 Linux/5.8.0-48-generic
|
Release files / asy-0.0.7-py3-none-any.whl
| Download URL | asy-0.0.7-py3-none-any.whl |
|---|---|
| Size | 9.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
37a259128be2ae11a361ec741495a5c66739caf45d35029635f7c81a696b4448
|
|
BLAKE2b-256 checksum How to use checksums |
1e51974025ab4890f1123e1dc425cdf06e9e7be4afed9f5020b3aa058502d219
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.0.8 CPython/3.8.5 Linux/5.8.0-48-generic
|