ability_task

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2026 License: BSD-3-Clause Imports: 16 Imported by: 0

Documentation

Overview

Package ability_task manages durable asynchronous task state: 受理(APIExecuter Async 一次性接入的唯一收口)、Worker 执行、重启恢复与任务查询。 状态三字段核心 run_status/process_status/progress,枚举与 model 列 comment、契约文档三处同步。

Index

Constants

View Source
const (
	RunStatusQueued  = "queued"
	RunStatusRunning = "running"
	RunStatusDone    = "done"
)

程序级运行状态(与 model 列 comment、docs/ability_task.md 同步维护)。

View Source
const (
	ProcessStatusSuccess     = "success"
	ProcessStatusFailed      = "failed"
	ProcessStatusCancelled   = "cancelled"
	ProcessStatusSystemError = "system_error"
)

业务级处理结局(空字符串 = 进行中;与 model 列 comment、docs/ability_task.md 同步维护)。

View Source
const (
	MethodTaskGet    = "task.get"
	MethodTaskList   = "task.list"
	MethodTaskCancel = "task.cancel"
)

Variables

View Source
var ErrTaskNotActive = errors.New("task is not active")

Functions

func AcceptAsyncTask

func AcceptAsyncTask(ctx context.Context, methodName string, abilityParams interface{}) (interface{}, error)

AcceptAsyncTask 是 Async 方法的统一受理:写入持久化排队区并返回 task_id。 只由 APIExecuter 调用(AGENTS 预留的一次性接入);身份取门禁 context 快照,无身份任务属主为 NULL。

func ExecuteNextQueuedTask

func ExecuteNextQueuedTask(ctx context.Context) (bool, error)

ExecuteNextQueuedTask 从持久化排队区原子认领一条任务并执行。 本方法是单次 Worker,由 Policy 按空闲名额异步调用;无排队任务时返回 false。

func LoadAPIMethods

func LoadAPIMethods()

func RequeueOrphanedTasks

func RequeueOrphanedTasks(ctx context.Context) error

RequeueOrphanedTasks 侦测未尽之事:把 DB 中 running 但不在本进程 in-flight 执行集合的孤儿任务 重置回 queued 拉起来继续。进程重启后第一轮侦测即捞回全部死进程遗留(此时 in-flight 为空); 运行中意外产生的孤儿同样每轮自愈。重跑兜底依赖异步 Execute 幂等(契约明记,责任归业务函数)。 由 policy 周期维护大循环调用。

func TaskCancel

func TaskCancel(ctx context.Context, input interface{}) (interface{}, error)

TaskCancel 取消我的排队中任务:queued 原子置 done+cancelled;running/done 或非属主统一拒绝。

func TaskGet

func TaskGet(ctx context.Context, input interface{}) (interface{}, error)

func TaskList

func TaskList(ctx context.Context, input interface{}) (interface{}, error)

func UpdateProgress

func UpdateProgress(ctx context.Context, taskID string, progress float64, message string) error

UpdateProgress 供异步业务 Execute 上报量化进度;仅活跃(非 done)任务可更新。

Types

type AsyncTaskInfo

type AsyncTaskInfo struct {
	TaskID string
	UserID *string
}

AsyncTaskInfo 是 Worker 注入业务 Execute context 的任务身份快照; 与门禁在线身份(AuthenticatedUser)语义分离:异步执行不要求受理时的 session 仍存活。

func AsyncTaskInfoFromContext

func AsyncTaskInfoFromContext(ctx context.Context) (*AsyncTaskInfo, bool)

AsyncTaskInfoFromContext 供异步业务 Execute 读取当前任务身份快照。

Directories

Path Synopsis
Package ability_task_model stores durable asynchronous task records.
Package ability_task_model stores durable asynchronous task records.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL