Cronhq icon

Cronhq

Cronhq 是分布式定时任务服务,可按计划调用 Webhook、重试失败请求、记录执行结果,并发送去重的失败与恢复告警;支持控制台、REST API、CLI 及免费自托管部署。

Cronhq

支持执行跟踪的定时 Webhook

Cronhq 是面向团队的托管式分布式 cron 服务,用于按计划调用 HTTP 端点。一个任务由五字段 cron 表达式、Webhook URL、可选请求设置和时区组成;Cronhq 会在每个匹配的时间点发送请求并记录结果。

该服务旨在让定时 Webhook 可观测且可恢复。基于 Postgres 的运行声明机制负责协调工作进程,可配置的重试用于处理临时故障,而去重告警会在任务达到失败阈值以及恢复时通知用户。Cronhq 还提供用于检测漏发 Ping 的心跳监控,以及控制台、REST API 和 CLI 工作流。

核心功能

严格一次调度

每次计划运行都会通过 Postgres 锁进行声明,确保多个工作进程不会调度同一时间点。如果工作进程在执行过程中失败,锁过期后,其他工作进程即可接管。

可配置重试

配置最大重试次数以及各次尝试之间的延迟。Cronhq 会区分成功、失败和超时结果,并保留最终错误信息。

失败与恢复告警

通过电子邮件或 Slack 发送去重的失败和恢复通知,减少持续故障期间重复告警。

签名 Webhook

每个请求都包含 X-Cronhq-Timestamp 和 X-Cronhq-Signature,其中包含针对任务签名密钥生成的 HMAC-SHA256 摘要。无需停机即可轮换密钥。

Cron 调度与时区支持

使用 cron 语法和任务时区定义计划,或使用控制台的计划构建器,以自然语言预览表达式。

执行历史与运维工具

查看每次执行的状态、尝试次数、HTTP 状态码、耗时,以及截断后的响应正文或错误消息。REST API 还支持立即触发,而 CLI 可实时查看执行记录并协调 cronhq.yaml 文件。

实际应用场景

  • 应用维护与批处理触发

    将任务指向内部应用的公共 Webhook,并设置所需时区,即可安排每晚汇总、发票生成、数据刷新或清理请求。

  • 应对临时故障的运维工作流

    利用重试和保留的执行详情,让间歇性下游故障保持可见,同时避免每次单独失败尝试都触发通知。

  • 失联开关监控

    配置心跳监控,让系统在每次预期运行时向 Cronhq 发送 Ping。如果在计划周期加宽限窗口之后仍未收到 Ping,监控会被标记为宕机并发送告警。

  • 版本控制的计划管理

    将计划存储在 cronhq.yaml 中,并使用 CLI 协调创建、更新和删除操作,然后在终端中实时查看执行记录,与应用代码并行工作。

Pros and Cons

Pros

  • 跨工作进程的严格一次运行声明通过 Postgres 锁进行协调。
  • 可获取重试记录、最终结果、HTTP 详情以及响应或错误信息,便于故障排查。
  • 告警经过去重,并支持通过电子邮件或 Slack 发送失败和恢复通知。
  • 任务支持标准 cron 表达式、时区、自定义方法、请求头、请求正文、超时和按任务配置的重试设置。
  • 提供免费的托管套餐,以及免费且采用 MIT 许可证的自托管选项。

Cons

  • 任务调用的端点必须可公开访问;所提供的文档未说明支持私有网络执行。
  • 执行历史的保留时间取决于套餐:Free 为 7 天,Developer 为 30 天,Pro 为 365 天。
  • 该产品以基于 Webhook 的调度为核心,因此并未作为通用工作进程或容器执行平台提供。

FAQ

Cronhq 如何运行定时任务?

Cronhq 使用标准的五字段 cron 表达式,向可公开访问的 Webhook 调度 HTTP 请求。任务支持 GET、POST、PUT、PATCH 或 DELETE,并可配置请求头、加密密钥请求头、请求正文、超时、重试和时区设置。

如何设置任务?

创建账户,复制以 chq_ 开头的 API 密钥,然后通过 REST API 或控制台创建任务。任务会在下一个计划时间点生效;你也可以从控制台或使用 POST /v1/jobs/:id/trigger 立即触发任务。

Webhook 失败时会发生什么?

如果返回非 2xx 响应或发生传输错误,系统会根据任务的 max_retries 和 retry_delay_secs 设置进行重试。每次尝试及最终结果都会记录在执行历史中。

告警如何工作?

告警可以发送到电子邮件或 Slack。当在过去一小时内达到配置的失败阈值时,Cronhq 会发送去重的失败通知;在连续失败后首次成功时,会发送恢复通知。

Cronhq 支持自托管吗?

可以。自托管版本免费且采用 MIT 许可证。它使用与托管服务相同的容器,并需要你自行提供 Postgres 数据库。

Quick Facts

类别
开发者工具 · 定时 Webhook
交付模式
托管式 API 和控制台,支持免费自托管
调度
带 IANA 时区的标准五字段 cron 语法
接口
REST API、Web 控制台和 cronhq CLI
告警目的地
电子邮件和 Slack
托管套餐
Free:5 个活跃任务;Developer:20 个;Pro:无限制