A zero-dependency async subprocess that keeps on getting stdout and stderr.
Project description
Usage | Release | Development |
---|---|---|
aiosubprocess
A zero-dependency async subprocess that keeps on getting stdout and stderr.
How to use
Example 1: Hello World
A classic Hello World. It prints Hello World!
in the shell and
redirects the stdout to print()
.
import asyncio
from aiosubprocess import Process
asyncio.get_event_loop().run_until_complete(
Process("echo Hello World!", stdout=print).shell()
)
$> python ex1_minimal.py
[AIO Subprocess-0] Hello World!
Process finished with exit code 0
Example 2: Two Processes
One process writes to a file, and a second process logs the content of the file in real time.
import asyncio
from aiosubprocess import Process
loop = asyncio.get_event_loop()
reader = Process(
"""for i in {1..5}
do
echo "Hello $i World" > tempfile.log
sleep 1
done""",
loop=loop,
name="Writer",
)
writer = Process(
"timeout --foreground 10s tail -f tempfile.log",
loop=loop,
name="Reader",
expected_returncode=124, # Because timeout is expected
)
awaitable_reader = reader.shell()
awaitable_writer = writer.shell()
gathered = asyncio.gather(awaitable_reader, awaitable_writer, loop=loop)
asyncio.get_event_loop().run_until_complete(gathered)
assert gathered.result() == [True, True]
Which does exactly this:
Why?
There are many scenario where we need to keep an eye on a subprocess output. If we want to do so in realtime (and redirect it to logs or a GUI), the boilerplate is tedious.
The other solution is to wait for the subprocess to exit and read the stdout/stderr afterwards.
This library implements this boilerplate, so you don't have to.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for aiosubprocess-2021.5.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7e314e539374c7b4fc44a16e4bcffc53cf7a3b59996e748db47133aff0f31a0 |
|
MD5 | 0db9b74678cac454340657fd535d9cf9 |
|
BLAKE2b-256 | 54720bc7364b6b50b718634afebacad545c49a4b8bd59fab404b3702cfe48140 |