关于 crontap-retries-and-idempotency
此技能介绍如何先确保接收端具备幂等性,再安全配置 Crontap 重试;内容涵盖故障检查、策略更新和结果验证。
主要功能
- 01根据计划历史分类故障
- 02设计持久化幂等键
- 03更新计划的重试策略
- 04测试重试并验证结果
适用场景
- 01重试瞬时故障而不产生重复副作用
- 02诊断定时任务的重复故障
- 03在非生产目标中检查重试行为
MCP 相关
通过 Crontap MCP 查看计划历史并更新计划的重试策略。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ crontap/ skills --skill crontap-retries-and-idempotency安装后在 Claude Code 中输入/crontap-retries-and-idempotency确认已加载。
详细介绍
重试与幂等性
只有当端点能够安全地多次接收同一逻辑任务时,重试才能提高送达率。在扩大重试策略前,先确保接收方具备幂等性。
前提条件
使用所需工具前,先确认这些工具是否可用。如果缺少任何工具,请停止操作,并且只向用户提供以下两种选择:
- 连接 Crontap MCP:
https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。 - 为原始 API 配置
$CRONTAP_CLIENT_ID和$CRONTAP_API_KEY。原始 API 访问需要 Ultra。
在用户选择前,不要擅自选择路径或继续操作。
- 确定计划任务以及它可能产生的每种副作用。
- 判断哪些失败对于此端点而言是暂时性的。
- 选择稳定的去重键和保留时长。
工作流
- 检查近期历史记录,对失败进行分类。
- 为端点添加幂等性,并测试重复请求。
- 使用 MCP 仅更新计划任务的重试策略。
- 验证一次受控的暂时性失败及其最终成功。
- 重新检查历史记录,确认尝试次数、延迟和最终结果。
MCP 示例
更改策略前先检查失败:
{
"tool": "get_schedule_history",
"arguments": {
"scheduleId": "<schedule-id>",
"limit": 50
}
}
重试常见的暂时性故障类别:
{
"tool": "update_schedule",
"arguments": {
"scheduleId": "<schedule-id>",
"retryPolicy": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 60000,
"retryOn": ["5xx", "429", "network", "timeout"]
}
}
}
允许的基础延迟为 30000、60000、300000 和 900000 毫秒。最大重试次数为 5。仅当此特定端点使用已知的暂时性 4xx 响应时,才包含 4xx。
端点幂等性模式
使用唯一数据库约束或原子插入,并以逻辑任务标识作为键:
key = job-name + ":" + scheduled-period
insert key before side effects
if key already exists, return the recorded result
perform side effects once
store completion outcome
对于资金转移、电子邮件发送、资源配置或外部写入,应将相同的键传递给支持幂等性的下游系统。不要依赖内存中的集合,因为重启和多个实例都会失去这种保护。
REST 回退方案
MCP 部分更新仍是首选方式,且不只限于 Ultra。公共 REST PUT 会完整替换资源,因此绝不要只发送 retryPolicy。
使用 Ultra 凭据时,先 GET 当前完整计划任务。构建完整的替换内容,至少包含 url、verb、interval 和 timezone。保留所有其他配置字段,包括 headers、body、集成项和计划任务选项。保留凭据和密钥,不要记录它们。仅更改 retryPolicy,然后将完整替换内容 PUT 到 https://api.crontap.com/v1/schedule/<schedule-id>。
验证
- 连续发送两次相同的逻辑请求,并确认只产生一项持久化副作用。
- 在非生产目标环境中触发一次安全的暂时性失败。
- 确认历史记录显示符合策略预期的重试和最终结果。
- 确认告警在最终失败后触发,而不是在成功恢复时触发。
安全性与套餐限制
- 自定义重试策略设置需要 Pro、Ultra 或旧版 Pro。Starter 仍可使用标准自动重试行为。
- 重试身份验证和验证失败通常只会增加负载,不会提高成功率。
- 幂等性保留时长绝不能短于最大重试窗口。
- 如果配置返回
RETRY_POLICY_NOT_CONFIGURABLE,请提供结构化的四选项阶梯方案以及所需的最小可行选项。
故障排查
- 只有一条历史记录却出现重复工作,通常是应用逻辑或其他调用方导致的,而非 Crontap 重试。
- 多次尝试间出现重复工作,说明接收方的去重事务不完整或作用范围过窄。
- 反复出现 429 响应时,需要协调速率限制,而不是增加尝试次数。
- 部分 REST 替换可能会清除计划任务设置。如果并发更改后要重试,请先重新获取数据。