@chronos.sh/sdk

中文文档
0.5.2发布于 2026/11/08MITTypeScriptESM + CJS零依赖近 30 天下载 3945

Chronos Java 脚本/ Type 脚本 SDK

中文使用文档
文档目录9 节
  1. 安装
  2. 快速启动
  3. 创建时间表和工作
  4. 监视其它地方的工作
  5. 检查 API 密钥
  6. 等着工作吧
  7. 伟大的关闭
  8. 文档
  9. 许可证

@chronos.sh/sdk (英语)

官方节点.js SDK 克罗诺斯 ——以服务形式可靠安排工作.

import { Chronos } from '@chronos.sh/sdk';

const chronos = new Chronos({ apiKey: process.env.CHRONOS_API_KEY! });

chronos.worker.handle('send-email', async (ctx) => {
  await sendEmail(ctx.payload);
  return { sent: true };
});

await chronos.worker.start();

零从属. 随处可见 fetch ——节点.js 20+, Bun, Deno.

安装

npm install @chronos.sh/sdk

快速启动

import { Chronos } from '@chronos.sh/sdk';

const chronos = new Chronos({ apiKey: process.env.CHRONOS_API_KEY! });

chronos.worker.handle<{ to: string }>('send-email', async (ctx) => {
  await sendEmail(ctx.payload.to);
  return { sent: true };
});

await chronos.worker.start();

worker.start() 长期工作并寄给注册的处理者。 它一直运行直到你打电话 worker.stop()如果有任何要求得到401,工人就会停止,而返回的承诺会被拒绝 ChronosAuthenticationError,所以一个错误的配置或被取消的密钥表面会立即取代永远的重试. 限制键需要 workers:run 管理工人的范围。 没有它,工人停止 和返回的承诺拒绝 ChronosApiError 谁 code 实值 insufficient_scope。工人路线只接受 API 密钥。 通过另一个证书为 apiKey例如OAuth指使物 以同样的方式阻止工人 code 设置为 credential_not_accepted。 。 。 .

创建时间表和工作

同一客户端管理时间表、工作、处决和监视器

await chronos.schedules.create({
  name: 'Nightly report',
  handler: 'send-report',
  cron: '0 2 * * *',
  timezone: 'Europe/London',
});

await chronos.jobs.create({
  name: 'Welcome email',
  handler: 'send-email',
  delay: { value: 10, unit: 'minute' },
  payload: { to: '[email protected]' },
});

for await (const job of chronos.jobs.iterate({ status: 'failed' })) {
  console.log(job.name, job.last_error);
}

球场使用API的蛇 案例名. list() 返回一页为 { data, paging },以及 iterate() 每一页都行 阅读网络错误的重试,超时,429和5xx回复. 写作只在429上重试,所以失联的回音从不发出两次创作. 一个大于64米B的响应机体从未被再试. 设定 maxRequestRetries 以更改重试数.

监视其它地方的工作

一个监视器监视着一个运行在克罗诺斯以外的工作,比如在你自己的服务器上运行克罗诺工作. 创建并给出 ping_url 任务:

const monitor = await chronos.monitors.create({
  name: 'Nightly backup',
  cron: '0 2 * * *',
});

monitor.ping_url 这是一个秘密。 保存在日志之外,并存放在工作读取其他证书的地方.

工作报告有一个HTTP请求,不需要SDK: curl -fsS "$PING_URL" 成功与否,或 curl -fsS "$PING_URL/fail" 失败. listPings() 财务报告和审定财务报表 iteratePings() 阅读它的报告.

当工作报告失败,或者没有成功或失败的ping到达内部时,克罗诺斯会发出警报 grace_seconds (违约300起).

检查 API 密钥

要检查启动时的 API 密钥, 请打电话 account.get()返回密钥所属的工作空间,并丢弃 ChronosAuthenticationError 如果密钥未知或被撤销:

const workspace = await chronos.account.get();
console.log(`Connected to ${workspace.name}`);

等着工作吧

要挡住,直到工作结束,打电话 jobs.wait()它在检查中等待一秒钟,一旦工作完成就返回 completed, (中文(简体) ), failed, (中文(简体) ), cancelled 或者说 skipped。一个失败的工作被退回,而不是丢弃。 60秒后,它会抛出 ChronosWaitTimeoutError,其 job 保持最后的状态 它从支票中重新删除其他错误, 例如 ChronosApiError 对于一个未知的身份。 要更改默认值, 设置 pollIntervalMs 或者说 maxWaitMs数字 :

const created = await chronos.jobs.create({ name: 'Welcome email', handler: 'send-email' });
const job = await chronos.jobs.wait(created.id, { maxWaitMs: 120_000 });
if (job.status === 'failed') {
  console.error(job.last_error);
}

拖拉工作完成时才有操作员.

伟大的关闭

SDK不安装信号处理器——您的应用程序拥有其过程生命周期. 线 SIGTERM编号 :SIGINT 改为 worker.stop() 因此,飞行中的工作及其结果报告在程序退出前完成:

let stopping = false;
for (const sig of ['SIGTERM', 'SIGINT'] as const) {
  process.on(sig, () => {
    if (stopping) process.exit(1);
    stopping = true;
    chronos.worker.stop().then(() => process.exit(143));
  });
}

第二次信号出击作为出逃舱门 这对任何长期工作者都很重要:独立的脚本、多克容器、系统服务、PM2、云VM或CI跑车.

文档

Chronos 文档

许可证

麻省理工学院

版本与发布记录

@chronos.sh/sdk 共发布 46 个版本,首次发布于 2026/05/06;过去 12 个月发布了 46 个版本。

版本发布日期距今
0.5.2latest2026/11/081 天前
0.5.3-canary.4eee61ccanary2026/11/081 天前
0.5.2-canary.cf9612b2026/11/081 天前
0.5.12026/11/072 天前
0.5.2-canary.80ac4fb2026/11/072 天前
0.5.1-canary.fe8dfac2026/11/072 天前

关于 @chronos.sh/sdk 的常见问题

@chronos.sh/sdk 是什么?

Chronos Java 脚本/ Type 脚本 SDK

如何安装 @chronos.sh/sdk?

在项目目录运行 npm install @chronos.sh/sdk,或使用 pnpm add / yarn add / bun add。

@chronos.sh/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chronos.sh/sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@chronos.sh/sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@chronos.sh/sdk 可以商用吗?

@chronos.sh/sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chronos.sh/sdk 的下载量有多少?

根据 npm 官方下载统计,@chronos.sh/sdk 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,945 次,日均约 132 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chronos.sh/sdk 还在维护吗?

最新版本 0.5.2 发布于 2026/11/08(1 天前);至今共发布 46 个版本,其中过去 12 个月发布了 46 个;首次发布于 2026/05/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。