Asynchronous tailing library written in Rust.
Python wrapper around Rust linemux library, which uses the notify cross-platform filesystem notification library.
Uses PyO3 Rust bindings and PyO3-asyncio to manage Rust/Python event loops lifecycles.
async-tail requires Python 3.7 - 3.11.
pip install async-tail
Binaries are available for:
- Linux:
x86_64
,aarch64
,i686
,armv7l
,musl-x86_64
,musl-aarch64
,ppc64le
&s390x
- MacOS:
x86_64
&arm64
(except python 3.7) - Windows: To be done
Otherwise, you can install from source which requires Rust stable to be installed.
Here are some examples of what async-tail can do:
from async_tail import tail
for line in tail('./path/to/file.log', './path/to/file_2.log'):
print(line)
import asyncio
from async_tail import atail
async def main():
async for line in atail('/path/to/file.txt', '/path/to/file_2.txt'):
print(line)
asyncio.run(main())
async-tail is a way for me to learn Rust and experiment Rust bindings from Python. It is inspired from the great Samuel COLVIN's work on watchfiles, which provides a Python wrapper around Rust notify crate. This is still under development. More things will come:
- Write tests
- Setup proper CI
- Build wheels for Windows
- Build and expose docs
- Provide benchmarks