触发器与调度器
文件监听触发器
当被监听的路径上有文件系统事件时,自动执行一份动作列表。
模块级的 trigger_manager 维护一份
按名称索引的活跃监听器表,让 JSON 外观与 GUI 共用同一份生命周期。
from automation_file import watch_start, watch_stop
watch_start(
name="inbox-sweeper",
path="/data/inbox",
action_list=[["FA_copy_all_file_to_dir",
{"source_dir": "/data/inbox",
"target_dir": "/data/processed"}]],
events=["created", "modified"],
recursive=False,
)
# 稍后:
watch_stop("inbox-sweeper")
也可以从 JSON 动作列表里调用 FA_watch_start /
FA_watch_stop / FA_watch_stop_all / FA_watch_list。
Cron 调度器
按重复时刻执行动作列表。5 字段 cron 解析器支持
*、精确值、a-b 区间、逗号分隔列表与 */n 步长,
也支持 jan..``dec`` / sun..``sat`` 别名。
from automation_file import schedule_add
schedule_add(
name="nightly-snapshot",
cron_expression="0 2 * * *", # 每天本地时间 02:00
action_list=[["FA_zip_dir", {"dir_we_want_to_zip": "/data",
"zip_name": "/backup/data_nightly"}]],
)
后台线程在每分钟边界唤醒,因此不支持小于一分钟的精度。
JSON 形式:FA_schedule_add / FA_schedule_remove /
FA_schedule_remove_all / FA_schedule_list。
当动作列表抛出
FileAutomationException 时,
两个调度器都会调用
notify_on_failure()。
若未注册任何 sink,该助手是 no-op,因此自动通知是
注册 NotificationSink 的可选副作用——
详见 通知。