@columenlabs/lumen-任务
卢门的背景活,服务器侧:一个人开始的工作分类账(搜索,同步,回填)及其状态,进展和结果,合作取消,一个收割者失败了任何被卡住的东西,以及信头"任务"列表调用的道路. 它与对 TasksProvider, (中文(简体) ), TasksButton 财务报告和审定财务报表 useTaskFor 内 @columenlabs/lumen-ui,它显示一个环 而东西运行, 一个点结束 看不见的任务, 和敬酒 当一个结束。 无附属关系 @columenlabs/lumen-ui-types数字 : Request, (中文(简体) ), Response 和任何SQLite,所以它运行在一个工人,一个持久的对象,邦或节点.
- 资料来源: https://github.com/columenlabs/lumen (中文(简体) ) (单位:千美元)
packages/tasks麻省理工学院.
安装
bun add @columenlabs/lumen-tasks @columenlabs/lumen-ui-types
将两者钉入与其他卢门包相同的精确版本.
分类账
import { createTasks, doSql } from '@columenlabs/lumen-tasks';
const tasks = createTasks({
db: doSql(ctx.storage.sql), // or d1Sql(env.DB)
onEnd: async (t) => { /* email or push for long ones */ },
});
分类账里没有东西运行。 工作运行在它的数据所在的地方(持久对象的警报,队列,跑道)并报告:
const t = await tasks.start({
owner, app: 'jobs', kind: 'search', title: 'Search · Remote roles',
link: '/feed', ref: search.id, total: 3, unit: 'sources',
});
for (const [i, source] of sources.entries()) {
if ((await tasks.progress(t.id, { done: i })).stop) return; // cancelled or reaped
await source.run();
}
await tasks.finish(t.id, { state: 'done', summary: '14 new jobs' });
- 取消是合作的. 它马上结束任务,引擎是下一个
progress答题stop: true。通过cancellable: false工作是无法停止的. - 没有什么能继续运行. 打开过去的任务
limitMinutes(15) 下段读取失败;不需要折叠. - 保留7天 (单位:千美元)
keepDays),最新第一,最多100个在列表中. byRef(owner, kind, ref)为一出作品找到最新的任务,因此一出引擎在一出开通时拒绝第二次出跑.
路线
import { taskRoutes } from '@columenlabs/lumen-tasks';
const routes = taskRoutes({ base: '/api/tasks', tasks: () => tasks, owner: (req) => callerId(req) });
app.all('/api/tasks/*', (c) => routes(c.req.raw));
GET /, (中文(简体) ), GET /:id, (中文(简体) ), POST /seen, (中文(简体) ), POST /clear, (中文(简体) ), POST /:id/clear, (中文(简体) ), POST /:id/cancel写作必须是同源JSON. tasks 可能返回一个向持有分类账的持久对象转发的根(TasksApi) (中文(简体) ).