自动化与队列
自动化与队列
工作区由函数组成。宿主把每次调用准入一个一次性工作线程,并限制连续占用 CPU 的时段,而不是限制整个函数的墙钟时间。工作线程与容量槽位存续到整次调用结束,随后回到零。基础设施队列是集成与通知定时任务的独立计时器——不是函数的运行方式。
基础设施队列设施
queue 设施端口用于集成导入、拉取、通知与会话标题——编写者不会选择该队列。自动化、Agent、页面与集合操作都是被准入的函数。契约见 设施 。
分派
HTTP、webhook、cron 或 resume 都进入同一条准入路径。槽位空闲时启动一个工作线程,否则请求等待后运行。租户代码等待模型、数据库或其它设施 I/O 时,工作线程与槽位仍被分配,实际 CPU 计量暂停;设施回复后,同一次调用继续执行。显式游标续作才是后续的一次新调用。
HTTP / webhook / cron / resume
│
▼
HOST ADMIT
CPU span = host policy
slot? run now : wait, then run
│
▼
ONE-SHOT WORKER (the guest)
page · find · create · one chunk · one step
│
┌──────┼──────────────────┐
▼ ▼ ▼
return await facility not done
or model I/O (more rows)
│ │ │
▼ ▼ ▼
reply same invocation save cursor
resumes; slot + later invocation
worker retained 宿主 CPU 时段
Colony 最多允许租户代码连续占用工作线程 CPU 2,000 毫秒,随后必须让出。这不是 2 秒墙钟超时:冷启动、排队以及等待模型或数据库设施都不消耗该 CPU 时段;这些等待仍会保留本次调用的工作线程与容量槽位,直至调用结束。
保证
- 宿主在机器计算预算内并发准入一次性工作线程。机器满时,下一次准入等待后运行;队列满则返回 503。
- 无效的 cron 在启动时失败,绝不在运行时悄悄失败。
- 超过连续 CPU 时段会终止工作线程,未提交事务会回滚。完成、失败或取消也会终止工作线程;调用之间没有任何租户工作线程常驻。
开发与生产
开发环境中的进程内间隔队列是基础设施定时任务的计时器。进程死亡会丢失工作。它不是函数的运行方式。Colony 为每次产物检查或调用创建新的工作线程;bolt start 则在进程内运行租户函数。