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
File details
Details for the file aiosubprocess-2021.5.3.tar.gz
.
File metadata
- Download URL: aiosubprocess-2021.5.3.tar.gz
- Upload date:
- Size: 924.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.25.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a59a717efe7853d33dd10d31339842d2c9c0ab28bfd1104f3324fd486a95373 |
|
MD5 | faa1edcb6937198e633efc2f8ce36cdd |
|
BLAKE2b-256 | 63febe124f33501c47cf7438f8141d1497c056b86a8a5142da7677a6c65f18df |
File details
Details for the file aiosubprocess-2021.5.3-py3-none-any.whl
.
File metadata
- Download URL: aiosubprocess-2021.5.3-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.25.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7e314e539374c7b4fc44a16e4bcffc53cf7a3b59996e748db47133aff0f31a0 |
|
MD5 | 0db9b74678cac454340657fd535d9cf9 |
|
BLAKE2b-256 | 54720bc7364b6b50b718634afebacad545c49a4b8bd59fab404b3702cfe48140 |