本文共 2139 字,大约阅读时间需要 7 分钟。
Node-RED是一种流程自动化工具,能够帮助开发者快速构建和部署自动化解决方案。其中,inject节点是一项强大的工具,能够配置周期性执行功能,适用于需要定时触发任务的场景。以下将从配置示例入手,详细讲解如何在Node-RED中实现周期性执行。
inject节点的核心配置参数包括:
repeat:决定是否重复触发节点,true表示周期性执行,false则只执行一次。crontab:配置定时触发规则,支持Linux的crontab格式。once:设置是否仅执行一次。onceDelay:在第一次执行后延迟触发。以下是一个简单的周期性执行配置示例:
{ "id": "71107f63.c2686", "type": "inject", "z": "f8f370d9.7ccc3", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "2", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 190, "y": 280, "wires": [ ["6866ece6.3b1964"] ]} 该配置表示每2次执行一次任务,crontab字段为空时,默认使用*/1 * * * *,即每秒执行一次。
如果需要在特定时间段内执行任务,可以通过crontab字段设置小时、分钟、秒等时间字段。例如,以下配置将任务定在每天的上午9点至11点之间执行:
{ "id": "2ee46c27fe222be5", "type": "inject", "z": "4bc32962b964d23d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "*/1 0 * * 1,3,5", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 190, "y": 360, "wires": [ ["26092280afbca76a"] ]} 需要注意的是,crontab格式与Linux cron表达式一致,具体格式为:
分钟 分钟 小时 天 日_of_month 月 day_of_week
例如,*/1 0 * * 1,3,5表示每分钟执行一次,限定在星期一、星期三和星期五的上午9点。
如果需要在特定时间执行任务,可以将crontab设置为固定时间。例如,以下配置将任务定在每天的12点执行:
{ "id": "9e4a370a93991fdc", "type": "inject", "z": "4bc32962b964d23d", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "00 12 * * 1", "once": false, "onceDelay": 0.1, "topic": "", "payloadType": "date", "x": 190, "y": 500, "wires": [ ["4af3067548fcc9f6"] ]} crontab设置为00 12 * * 1,表示每天的上午12点执行一次任务。
repeat与crontab的综合使用:repeat和crontab可以结合使用。repeat用于控制执行频率(如每秒、每分钟),而crontab则用于指定具体的时间点。例如,crontab="*/5 * * * *"表示每5秒执行一次,且在每秒内都执行一次。
once参数:如果需要仅执行一次,可以设置once=true。此时repeat参数将被忽略。
onceDelay参数:onceDelay用于在第一次执行后延迟触发,通常用于防止频繁触发节点带来的性能负担。
topic参数:topic用于指定节点的输出主题,主要用于节点间通信。如果不需要子节点订阅,可以设置为空字符串。
通过以上配置示例,可以轻松实现Node-RED中的周期性执行功能。在实际应用中,可以根据具体需求灵活配置crontab和repeat参数,满足不同的自动化场景需求。
转载地址:http://fsjfk.baihongyu.com/