惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

文章列表

不改一行插件代码,实现消息优先级与阻断 在 butterfly 主题中添加首页点集动画(基于p2line项目) 你好,2026 stm32f4xx-ads1256驱动 stm32f4xx-ad9854并行驱动 主动式网站状态监测实现及其应用 右键菜单加入用Trae打开文件和文件夹 三角洲行动ID映射表 洛玖SDK说明 为网页文章开头添加原文连接 Hexo-Butterfly主题在主页添加GitHub贡献日历 Proteus中555定时器仿真问题 装饰器 洛玖开发日记 STS3032舵机获取力矩输出 kotlin网页前后端那些事 mspm0g3507-ad9850 奇怪的bug Paddle模型转PaddleLite
洛玖定时任务系统
洛屿 · 2026-05-01 · via

概述

洛玖采用基于 FFI 消息总线的定时任务系统。插件通过向 luo9_task topic 发布请求来注册定时任务,luo9_bot内含轻量级 Cron 调度器,到期后通过同一 topic 向插件推送事件。

架构

1
2
3
4
5
6
7
8
插件 ──publish──> luo9_task (请求: schedule/cancel)

┌───────┴───────┐
│ Cron 调度器 │ ← luo9_bot内 tokio task
│ 每秒检查匹配 │
└───────┬───────┘

插件 <──pop──── luo9_task (事件: tick)

Task 协议

注册定时任务

插件发布 JSON 到 luo9_task topic:

1
2
3
4
5
6
{
"action": "schedule",
"task_name": "my_task",
"cron": "0 */5 * * * *",
"payload": "任意数据"
}

取消定时任务

1
2
3
4
{
"action": "cancel",
"task_name": "my_task"
}

接收定时事件

调度器触发后,插件通过订阅 luo9_task 接收:

1
2
3
4
5
{
"event": "tick",
"task_name": "my_task",
"payload": "任意数据"
}

区分方式:请求有 action 字段,事件有 event 字段。

Cron 表达式

6 字段格式:秒 分 时 日 月 周

字段 范围
0-59
0-59
0-23
1-31
1-12 (支持 JAN-DEC)
0-7 (0和7=周日, 支持 SUN-SAT)

特殊字符

字符 说明 示例
* 所有值 * * * * * *
? 不指定(日/周互斥) 0 0 12 15 * ?
- 范围 0 0 9-17 * * *
, 列表 0 0 0 1,15 * *
/ 步长 0 */5 * * * *
L 最后(日: 月末; 周: 最后周X) 0 0 0 L * * / 0 0 0 * * 5L
W 最近工作日(不跨月) 0 0 0 15W * *
# 第N个星期X 0 0 0 * * 2#3(第3个周一)

常用示例

Cron 表达式 含义
0 */5 * * * * 每5分钟
0 0 9 * * * 每天 9:00
0 0 0 * * 1 每周一 0:00
0 0 12 15 * ? 每月15号 12:00
0 0 0 L * * 每月最后一天 0:00
0 0 0 * * 5L 每月最后一个周五 0:00
0 0 0 * * 2#3 每月第3个周一 0:00

插件端使用(Rust)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use luo9_sdk::bus::Bus;

fn register_task() {
let request = serde_json::json!({
"action": "schedule",
"task_name": "epic_remind",
"cron": "0 0 9 * * *",
"payload": "epic_daily_check"
});
Bus::topic("luo9_task").publish(&request.to_string()).ok();
}

fn cancel_task() {
let request = serde_json::json!({
"action": "cancel",
"task_name": "epic_remind"
});
Bus::topic("luo9_task").publish(&request.to_string()).ok();
}

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 洛屿的小站

打赏

  • wechat

    wechat

  • alipay

    alipay