aionotify
is a simple, asyncio-based inotify library.
Its use is quite simple:
import asyncio
import aionotify
# Setup the watcher
watcher = aionotify.Watcher()
watcher.watch(alias='logs', path='/var/log', flags=aionotify.Flags.MODIFY)
# Prepare the loop
loop = asyncio.get_eventloop()
async def work():
await watcher.setup(loop)
for _i in range(10):
# Pick the 10 first events
event = await watcher.get_event()
print(event)
watcher.close()
loop.run_until_completed(work())
loop.stop()
loop.close()
- Code at https://github.com/rbarrois/aionotify
- Package at https://pypi.python.org/pypi/aionotify/
- Continuous integration at https://travis-ci.org/rbarrois/aionotify/
An event is a simple object with a few attributes:
name
: the path of the modified fileflags
: the modification flag; useaionotify.Flags.parse()
to retrieve a list of individual values.alias
: the alias of the watch triggering the eventcookie
: for renames, this integer value links the "renamed from" and "renamed to" events.
aionotify
uses a system of "watches", similar to inotify.
A watch may have an alias; by default, it uses the path name:
watcher = aionotify.Watcher()
watcher.watch('/var/log', flags=aionotify.Flags.MODIFY)
# Similar to:
watcher.watch('/var/log', flags=aionotify.Flags.MODIFY, alias='/var/log')
A watch can be removed by using its alias:
watcher = aionotify.Watcher()
watcher.watch('/var/log', flags=aionotify.Flags.MODIFY)
watcher.unwatch('/var/log')