豫言 / 豫言操作系统定时事件适配 @ 0.1.0
以云工 scheduled 事件的控制器实现定时事件接口。
说明.汉语.md
# 定时事件云工适配 从当前 Worker 的 `scheduled` 控制器读取 `cron` 与 `scheduledTime`。云工宿主把 `scheduledTime` 写成十进制字符串交给适配,适配核对为 1 至 16 位数字、没有多余前导零后原样拼入 JSON,不经过浮点;`cron` 用豫言 JSON 编码器转义。适配先核对事件种类,使非定时事件里的调用成为可捕获的豫言异常,而不是宿主 JS 错误。事件寿命由云工宿主保证:`scheduled` 处理器返回的 Promise 在豫言程序运行结束时才完成,并同时交给 `ctx.waitUntil`,所以应用的异步写入都在这一次调用之内;程序抛出未捕获异常时该 Promise 被拒绝,平台记为失败。适配不暴露控制器句柄,也不调用 `noRetry`。宿主对每次事件另设 30 秒的运行时限,超时同样使调用失败。 真实本地 workerd 实测:经 `/cdn-cgi/handler/scheduled?cron=…&time=毫秒` 触发,`cron` 与 `scheduledTime`(毫秒整数)原样到达豫言;不带 `time` 时 `scheduledTime` 是当前毫秒;事件内的 KV 异步写入在调用结束前完成。综合场景见 `../消息队列/一致性验证/真实工作者/`。 `一致性验证/` 里有试验应用、真实 Wasm 的 Node 测试和复跑说明。
说明.文言.md
# 定时事件云工适配 自当前 Worker 之 `scheduled` 控制器读 `cron` 与 `scheduledTime`。云工宿主以十进文授 `scheduledTime`,适配核其为一至十六位数字而无赘零,乃原文入 JSON,不经浮点;`cron` 则以豫言 JSON 编码器转义。适配先验事种,使非定时之事而呼此术者,得可捕之豫言异,而非宿主 JS 之误。事之寿,云工宿主保之:`scheduled` 处理器所返 Promise 待豫言程序毕乃成,并授 `ctx.waitUntil`,故客之异步书写皆在此一调用之内;程序抛未捕之异,则其 Promise 被拒,平台记为败。适配不露控制器之柄,亦不行 `noRetry`。宿主于每事另设三十秒之运行时限,逾则调用亦败。 真本地 workerd 实测:经 `/cdn-cgi/handler/scheduled?cron=…&time=毫秒` 而发,`cron` 与 `scheduledTime`(毫秒整数)原样达于豫言;不带 `time` 则 `scheduledTime` 为当下之毫秒;事内 KV 之异步书写,于调用终前已成。综合之场见 `../消息队列/一致性验证/真实工作者/`。 `一致性验证/` 有试应用、真 Wasm 之 Node 测试及复行之说明。