stackstorm 16.编写stackstorm的定时器

本文详细介绍了如何在StackStorm中创建一个基于CronTimer的定时规则,包括理解规则的基础概念、编写规则文件、创建动作及元数据文件、验证定时器是否生效等步骤。通过这些步骤,你可以实现自定义的定时执行任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 定时器基础


定时器从本质上来说就是stackstorm中的rule。
规则对trigger触发器到action(或工作流)做了映射。应用匹配的criteria并且
映射trigger payloads到动作的输入。
说白了rules包含trigger,action,criteria(可以不需要)3个部分,来将事件
的触发映射到动作的执行。
trigger是前置条件,如果触发,则继续查看criteria(如果存在的化)条件是否匹配,
如果匹配,则触action。

rule的主要格式如下:
name: 规则名称
pack: 规则的属于方,如果没有指定pack则为default
description: 规则的描述
enabled: 规则是否开启(true或者false)
trigger:emitted from sensors to monitor, and optionally parameters associated with that trigger.
criteria:可选择的集合,包含
    一个trigger的payload的属性
    criteria比较的类型
    pattern: to match against.
action:当一个规则被满足时,执行的动作,包含:
    ref:动作或工作流的名称
    parameters: 执行动作的参数(可选)

管理规则
通过命令
st2 rule create ${PATH_TO_RULE}
来部署规则
例如:
st2 rule create /usr/share/doc/st2/examples/rules/sample_rule_with_webhook.yaml

加载所有规则,使用:
st2ctl reload --register-rules

自定义规则被放在:
/opt/stackstorm/packs/<pack_name>/rules
目录。
例如:
/opt/stackstorm/packs/examples/rules

2 编写一个规则文件


print_rule.yaml
内容如下:

---
  name: "print_rule"
  pack: "default"
  description: "print rule"
  enabled: true

  trigger:
    type: "core.st2.CronTimer"
    parameters:
        timezone: "Asia/Shanghai"
        day_of_week: "*"
        hour: "*"
        minute: "*"
        second: 0

  action:
    ref: "default.write_content_action"
    parameters:
      content: "first_rule"

注意:
这里action下面的ref一定是实际的action名称,
不要写错成action执行的脚本文件名

将规则文件放在对应目录下面
关键是规则存放在哪里,
最终存放在:
/opt/stackstorm/packs/default/rules

3 创建规则

st2 rule create /opt/stackstorm/packs/default/rules/write_rule.yaml
输出结果:
+---------------+----------------------------------------------------------+
| Property      | Value                                                    |
+---------------+----------------------------------------------------------+
| id            | 5c6559a59dc6d60729fc00ad                                 |
| name          | rule_write_content                                       |
| pack          | default                                                  |
| description   | write content rule                                       |
| ac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值