定时任务的坑不在写,在跑。任务静默失败、重复触发、告警刷屏,运维的老三样。Product Hunt 日榜第十二的 Cronhq 把自己定位成一个定时 Webhook 的 REST API,核心卖点写在第一句,恰好一次执行,由 Postgres 锁强制保证。我把官网、定价页和 PH 讨论看了一遍,这个单人作品的小而美值得聊。
主要功能
Cronhq 用 Rust 写成跑在 Postgres 上,技术栈具体到 axum 加 sqlx 加 tokio,面板用 Next.js。官方口径是无 SDK、无代理、无守护进程,JSON 进 JSON 出。注册走邮箱一次性链接,发一把 36 位、chq 开头的 API 密钥,建任务就是向 v1/jobs 端点发一个 POST,名字、cron 表达式、回调地址、时区四个字段起步。
执行保证靠数据库锁。两个 worker 永远不会触发同一次调度,任务执行中崩溃,锁过期后另一个 worker 接手。每个任务可配最大重试次数与延迟,按退避间隔递增,官方给的示意是六十秒、一百二、二百四这样翻上去。发出的每个请求带 HMAC 签名头,时间戳加请求体的签名可验真伪,每个任务独立密钥支持零停机轮换。
监控思路是双保险。正向的任务调度之外还有心跳死开关,你的任务每次跑完 ping 一个 URL,错过周期加宽限期的窗口就把监控项置为宕机并通知一次,官方的说法很妙,这是 cron 的反面,证明缺席而非证明在场。告警做了去重,一小时内第三次失败才报警,恢复的瞬间再报一次,Email 与 Slack 两个通道。站点自标 v0.1,部署在单区域,早期属性明明白白。
工程化细节跟上了现代习惯。命令行工具用 npx 即装,sync 子命令按仓库里的 yaml 文件创建更新与清理任务,实现 cron 即代码,tail 子命令实时流式看执行。控制台的面板支持自然语言转 cron 表达式,工作日早九点这种话直接换算。执行记录存状态、耗时、HTTP 状态码与响应体,可搜索,错误码与超时配置在文档里都有对应章节。自托管档的文案写着同一镜像无遥测、没有藏在档位后面的功能开关,姿态摆得很开。
解决了什么需求
个人项目与小团队的定时需求,用系统 cron 怕静默失败,上企业级调度平台又嫌重,这个中间档正好。免费档最小间隔五分钟,提醒类与汇总类任务都够用,分钟级再上升档。PH 评论区的问题都很内行。Davide Terni 夸文档质量,随即指出 webhook 头里缺一个稳定的执行 ID,重试后 payload 里的 ID 可能变化,接收方不好去重,作者回复会尽快在头里加上。Anton Wentzel 说自己曾用类似方案东拼西凑,CLI 与 yaml 的 cron 即代码对他特别有用。Jay Janarthanan 问能不能跑 SSH 型任务,结论是只支持 webhook。Gal Dayan 追问 worker 崩溃时锁的释放机制,这正是这类产品的核心技术点。迁移建议给一条,现有系统 cron 先并行接入观察一周,确认告警通知能正常到达手机与 Slack,再切换。
价格与注意事项
三档定价。免费档五个活跃任务,含执行保证、重试、告警、签名与监控,执行历史七天,最小间隔五分钟。开发者档每月 5 美元,二十个任务,最小间隔一分钟,历史三十天,邮件支持二十四小时响应。专业档每月 10 美元,任务不限,最小间隔三十秒,历史一年,优先支持四小时。年付优惠与兑换码走邮件联系,自托管档官方称永久免费且与云端同一镜像,MIT 许可,自带 Postgres 即可。
必须提醒的一个矛盾。官方宣传开源与自托管,但 GitHub 仓库截稿时仍是 404,评论区已有人指出,作者承诺几天内公开,尚未兑现。引用开源属性时以仓库实际放出为准。产品自标 v0.1,单区域部署,生产采用前留好兜底。另有个流传的说法把开发者写成另一个人,那是 AI 内容站的以讹传讹,PH 页面的 maker 是 Michael Sunmisola。
总结
用一把数据库锁把恰好一次执行做实,Cronhq 的技术叙事干净,定价也克制。免费五任务起步够个人用,自托管党等仓库放出来再上手。定时任务这东西,跑得稳比跑得花重要,这个小服务把稳字放在了第一位,提醒类的任务值得托付给它。
来源
- 官网 https://cronhq.xyz
- 文档 https://cronhq.xyz/docs
- 定价页 https://cronhq.xyz/pricing
- Product Hunt 页面 https://www.producthunt.com/products/cronhq