add Rule and FileManager to README.md
This commit is contained in:
19
README.md
19
README.md
@@ -21,13 +21,23 @@ This is a very basic example task that just logs each event and task_id:
|
|||||||
async def task(event, task_id):
|
async def task(event, task_id):
|
||||||
logging.info(f"{task_id}: execute example task: {event}")
|
logging.info(f"{task_id}: execute example task: {event}")
|
||||||
```
|
```
|
||||||
|
|
||||||
### FileManager
|
### FileManager
|
||||||
|
FileManager moves, copy or deletes files and/or directories following a list of *rules*.
|
||||||
|
A rule holds an *action* (move, copy or delete) and a regular expression *src_re*. The FileManager task will be executed if *src_re* matches the path of an event. If the action is copy or move, the destination path *dst_re* is mandatory. If *auto_create* is True, possibly missing subdirectories in *dst_re* are automatically created. If *action* is delete and *rec* is True, non-empty directories will be deleted recursively. It is possible to use Regex subgroups or named-subgroups in *src_re* and *dst_re*.
|
||||||
|
```python
|
||||||
|
rule = Rule(
|
||||||
|
action="move", src_re="^/src_path/(?P<path>.*).to_move$",
|
||||||
|
dst_re="/dst_path/\g<path>", auto_create=False, rec=False)
|
||||||
|
|
||||||
|
fm = FileManager(rules=[rule])
|
||||||
|
```
|
||||||
|
|
||||||
## Schedulers
|
## Schedulers
|
||||||
pyinotifyd has different schedulers to schedule tasks with an optional delay. The advantages of using a scheduler are consistent logging and the possibility to cancel delayed tasks. Furthermore, schedulers have the ability to differentiate between files and directories.
|
pyinotifyd has different schedulers to schedule tasks with an optional delay. The advantages of using a scheduler are consistent logging and the possibility to cancel delayed tasks. Furthermore, schedulers have the ability to differentiate between files and directories.
|
||||||
|
|
||||||
### TaskScheduler
|
### TaskScheduler
|
||||||
TaskScheduler to schedule *task* with an optional *delay* in seconds. Use the *files* and *dirs* arguments to schedule tasks only for files and/or directories.
|
TaskScheduler schedules *task* with an optional *delay* in seconds. Use the *files* and *dirs* arguments to schedule tasks only for files and/or directories.
|
||||||
The *logname* argument is used to set a custom name for log messages. All arguments except for *task* are optional.
|
The *logname* argument is used to set a custom name for log messages. All arguments except for *task* are optional.
|
||||||
```python
|
```python
|
||||||
s = TaskScheduler(task=task, files=True, dirs=False, delay=0, logname="TaskScheduler")
|
s = TaskScheduler(task=task, files=True, dirs=False, delay=0, logname="TaskScheduler")
|
||||||
@@ -39,12 +49,12 @@ TaskScheduler provides two tasks which can be bound to an event in an event map.
|
|||||||
Cancel a scheduled task.
|
Cancel a scheduled task.
|
||||||
|
|
||||||
### ShellScheduler
|
### ShellScheduler
|
||||||
ShellScheduler to schedule Shell command *cmd*. The placeholders **{maskname}**, **{pathname}** and **{src_pathname}** are replaced with the actual values of the event. ShellScheduler has the same optional arguments as TaskScheduler and provides the same tasks.
|
ShellScheduler schedules Shell command *cmd*. The placeholders **{maskname}**, **{pathname}** and **{src_pathname}** are replaced with the actual values of the event. ShellScheduler has the same optional arguments as TaskScheduler and provides the same tasks.
|
||||||
```python
|
```python
|
||||||
s1 = ShellScheduler(cmd="/usr/local/bin/task.sh {maskname} {pathname} {src_pathname}")
|
s1 = ShellScheduler(cmd="/usr/local/bin/task.sh {maskname} {pathname} {src_pathname}")
|
||||||
```
|
```
|
||||||
## Event maps
|
## Event maps
|
||||||
Event maps are used to map event types to tasks. It is possible to set a list of tasks to run multiple tasks on a single event. If the task of an event type is set to None, it is ignored.
|
EventMap maps event types to tasks. It is possible to set a list of tasks to run multiple tasks on a single event. If the task of an event type is set to None, it is ignored.
|
||||||
This is an example:
|
This is an example:
|
||||||
```python
|
```python
|
||||||
event_map = EventMap({"IN_CLOSE_NOWRITE": [s.schedule, s1.schedule],
|
event_map = EventMap({"IN_CLOSE_NOWRITE": [s.schedule, s1.schedule],
|
||||||
@@ -52,7 +62,7 @@ event_map = EventMap({"IN_CLOSE_NOWRITE": [s.schedule, s1.schedule],
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Watches
|
## Watches
|
||||||
Watches *path* for event types in *event_map* and execute the corresponding task(s). If *rec* is True, a watch will be added on each subdirectory in *path*. If *auto_add* is True, a watch will be added automatically on newly created subdirectories in *path*.
|
Watch watches *path* for event types in *event_map* and execute the corresponding task(s). If *rec* is True, a watch will be added on each subdirectory in *path*. If *auto_add* is True, a watch will be added automatically on newly created subdirectories in *path*.
|
||||||
```python
|
```python
|
||||||
watch = Watch(path="/tmp", event_map=event_map, rec=False, auto_add=False)
|
watch = Watch(path="/tmp", event_map=event_map, rec=False, auto_add=False)
|
||||||
```
|
```
|
||||||
@@ -122,7 +132,6 @@ watch = Watch(path="/src_path", event_map=event_map, rec=True, auto_add=True)
|
|||||||
|
|
||||||
# note that shutdown_timeout should be greater than the greatest scheduler delay,
|
# note that shutdown_timeout should be greater than the greatest scheduler delay,
|
||||||
# otherwise pending tasks may get cancelled during shutdown.
|
# otherwise pending tasks may get cancelled during shutdown.
|
||||||
|
|
||||||
pyinotifyd_config = PyinotifydConfig(
|
pyinotifyd_config = PyinotifydConfig(
|
||||||
watches=[watch], loglevel=logging.INFO, shutdown_timeout=35)
|
watches=[watch], loglevel=logging.INFO, shutdown_timeout=35)
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user