You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`component`| string or table | required | The component to run on the schedule given in `cron_expression`. (This is the standard Spin trigger component field.) |
58
-
|`cron_expression`| string | required | The `cron` expresison describing the schedule on which to execute the component. |
58
+
|`cron_expression`| string | required | The `cron` expression describes the schedule for executing the component. |
59
+
60
+
### Cron Expression Fields
61
+
62
+
The `cron_expression` fields are as follows:
63
+
64
+
```text
65
+
# ┌──────────── sec (0–59)
66
+
# | ┌───────────── min (0–59)
67
+
# | │ ┌───────────── hour (0–23)
68
+
# | │ │ ┌───────────── day of month (1–31)
69
+
# | │ │ │ ┌───────────── month (1–12)
70
+
# | │ │ │ │ ┌───────────── day of week (0–6)
71
+
# | │ │ │ │ | ┌─────────────- year
72
+
# | │ │ │ │ | │
73
+
# | │ │ │ │ | │
74
+
* * * * * * *
75
+
```
76
+
77
+
### Cron Expression Characters
78
+
79
+
The `*` indicates that every value applies. For example, if `sec` is set to `*`, then every second will trigger execution.
80
+
The `/` indicates increments. For example, if `sec` is set to `0/15`, then starting at `0`, the trigger will be executed every 15 seconds.
81
+
The `,` indicates a list of values. For example, if `sec` is set to `2,8`, then the trigger will execute only on the 2nd and 8th seconds of every minute.
82
+
The `-` indicates range. For example, if the `sec` is set to `5-10`, then the trigger will execute only on the 5th, 6th, 7th, 8th, 9th, and 10th seconds of each minute.
83
+
The `0` indicates no execution. If the `sec` is set to `0`, then the trigger can only execute on higher field values such as `min`, `hour`, etc. The lowest second increment is 60 (one minute).
84
+
85
+
Here is one example that combines a few of the fields mentioned above:
86
+
87
+
```text
88
+
sec min hour day of month month day of week year
89
+
0 1/2 11,12 5-10 * * *
90
+
```
91
+
92
+
The above schedule of `0 1/2 11,12 5-10 * * *` will execute on the first minute and every subsequent 2 minutes during the 11th hour and the 12 hour (noon) on days 5 through 10 of every month (regardless of the day of the week) and this will repeat through every year.
59
93
60
94
## Building Cron Components
61
95
62
96
Currently only a Rust SDK is supported for guest components. The `spin-cron-sdk` along with the [`spin_sdk` crate](https://docs.rs/spin-sdk) can be used to build cron components. The guest code must have a function decorated with the `#[cron_component]` macro. See `guest/src/lib.rs` for an example in rust.
63
97
64
98
The signature of the function must be `fn handle_cron_event(metadata: Metadata) -> Result<(), Error>`.
65
99
66
-
The `Metadata` object contains a single field `timestamp` which contains the duration since 00:00:00 UTC on 1 January 1970 (the Unix epoch) in seconds.
100
+
The `Metadata` object contains a single field `timestamp` which contains the duration since 00:00:00 UTC on 1 January 1970 (the Unix epoch) in seconds.
0 commit comments