scheduler

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 14, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

scheduler/logger.go

scheduler/options.go

scheduler/priority_queue.go

scheduler/task.go

scheduler/worker_pool.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FuncLogger added in v0.1.1

type FuncLogger struct {
	// contains filtered or unexported fields
}

FuncLogger 是一个适配器,将单一日志函数转换为 Logger 接口 用于兼容旧的日志函数

func (*FuncLogger) Debug added in v0.1.1

func (l *FuncLogger) Debug(format string, args ...any)

func (*FuncLogger) Error added in v0.1.1

func (l *FuncLogger) Error(format string, args ...any)

func (*FuncLogger) Info added in v0.1.1

func (l *FuncLogger) Info(format string, args ...any)

func (*FuncLogger) Warn added in v0.1.1

func (l *FuncLogger) Warn(format string, args ...any)

type Job

type Job func(ctx context.Context) error

Job 定义任务函数

type JobResult

type JobResult struct {
	Name     string
	Duration time.Duration
	Success  bool
	Err      error
}

JobResult 用于记录任务执行结果

type Logger added in v0.1.1

type Logger interface {
	// Debug 记录调试级别的日志
	Debug(format string, args ...any)

	// Info 记录信息级别的日志
	Info(format string, args ...any)

	// Warn 记录警告级别的日志
	Warn(format string, args ...any)

	// Error 记录错误级别的日志
	Error(format string, args ...any)
}

Logger 定义了日志接口,支持不同级别的日志记录

func NewFuncLogger added in v0.1.1

func NewFuncLogger(logFunc func(format string, args ...any)) Logger

NewFuncLogger 创建一个新的 FuncLogger

type Priority added in v0.1.1

type Priority int

Priority 定义任务优先级

const (
	PriorityLow    Priority = 1
	PriorityNormal Priority = 5
	PriorityHigh   Priority = 10
)

type PriorityQueue added in v0.1.1

type PriorityQueue struct {
	// contains filtered or unexported fields
}

PriorityQueue 实现了一个基于优先级的任务队列

func NewPriorityQueue added in v0.1.1

func NewPriorityQueue() *PriorityQueue

NewPriorityQueue 创建一个新的优先级队列

func (*PriorityQueue) Dequeue added in v0.1.1

func (pq *PriorityQueue) Dequeue() *Task

Dequeue 从队列中取出最高优先级的任务

func (*PriorityQueue) Enqueue added in v0.1.1

func (pq *PriorityQueue) Enqueue(task *Task)

Enqueue 将任务添加到队列

func (*PriorityQueue) IsEmpty added in v0.1.1

func (pq *PriorityQueue) IsEmpty() bool

IsEmpty 检查队列是否为空

func (*PriorityQueue) Len added in v0.1.1

func (pq *PriorityQueue) Len() int

Len 返回队列长度

func (*PriorityQueue) Less added in v0.1.1

func (pq *PriorityQueue) Less(i, j int) bool

Less 比较两个任务的优先级 注意:我们希望 Pop 返回最高优先级的任务,所以使用 > 而不是 <

func (*PriorityQueue) Pop added in v0.1.1

func (pq *PriorityQueue) Pop() interface{}

Pop 从队列中移除并返回最高优先级的任务

func (*PriorityQueue) Push added in v0.1.1

func (pq *PriorityQueue) Push(x interface{})

Push 添加任务到队列

func (*PriorityQueue) Swap added in v0.1.1

func (pq *PriorityQueue) Swap(i, j int)

Swap 交换两个任务的位置

type ResourceLimits added in v0.1.1

type ResourceLimits struct {
	MaxCPU    int           // CPU 使用限制(百分比,0-100)
	MaxMemory int           // 内存使用限制(MB,0表示不限制)
	MaxTime   time.Duration // 最大执行时间(0表示不限制)
}

ResourceLimits 定义任务资源限制

type Task

type Task struct {
	// contains filtered or unexported fields
}

Task 表示一个可配置的任务

func NewTask

func NewTask(opts ...TaskOption) *Task

NewTask 创建新任务,并应用所有配置项

func (*Task) GetRunCount added in v0.1.1

func (t *Task) GetRunCount() int

GetRunCount 返回当前运行次数

func (*Task) Run

func (t *Task) Run()

Run 启动任务

func (*Task) Stop

func (t *Task) Stop()

Stop 停止任务

type TaskItem added in v0.1.1

type TaskItem struct {
	// contains filtered or unexported fields
}

TaskItem 表示优先级队列中的任务项

type TaskOption

type TaskOption func(*Task)

TaskOption 是配置任务的函数类型

func WithCancelOnFailure

func WithCancelOnFailure(cancel bool) TaskOption

WithCancelOnFailure 设置失败时是否取消任务

func WithErrorHandler

func WithErrorHandler(handler func(error)) TaskOption

WithErrorHandler 设置错误处理器

func WithJob

func WithJob(job func(context.Context) error) TaskOption

WithJob 设置任务主体函数

func WithLogger

func WithLogger(logger Logger) TaskOption

WithLogger 自定义日志记录器

func WithLoggerFunc added in v0.1.1

func WithLoggerFunc(logFunc func(format string, args ...any)) TaskOption

WithLoggerFunc 使用函数作为日志记录器

func WithMaxCPU added in v0.1.1

func WithMaxCPU(maxCPU int) TaskOption

WithMaxCPU 设置任务CPU使用限制

func WithMaxExecutionTime added in v0.1.1

func WithMaxExecutionTime(maxTime time.Duration) TaskOption

WithMaxExecutionTime 设置任务最大执行时间

func WithMaxMemory added in v0.1.1

func WithMaxMemory(maxMemory int) TaskOption

WithMaxMemory 设置任务内存使用限制

func WithMaxRuns

func WithMaxRuns(n int) TaskOption

WithMaxRuns 设置最大运行次数

func WithMetricCollector

func WithMetricCollector(collector func(JobResult)) TaskOption

WithMetricCollector 收集任务指标

func WithName

func WithName(name string) TaskOption

WithName 设置任务名称

func WithParallelism

func WithParallelism(n int) TaskOption

WithParallelism 并发执行多个任务(暂不实现并发控制,仅保留字段)

func WithPostHook

func WithPostHook(hook func()) TaskOption

WithPostHook 添加执行后钩子

func WithPreHook

func WithPreHook(hook func()) TaskOption

WithPreHook 添加执行前钩子

func WithPriority added in v0.1.1

func WithPriority(priority Priority) TaskOption

WithPriority 设置任务优先级

func WithRecover

func WithRecover(hook func(any)) TaskOption

WithRecover 添加 panic 恢复钩子

func WithRepeat

func WithRepeat(interval time.Duration) TaskOption

WithRepeat 设置任务以固定间隔重复执行

func WithResourceLimits added in v0.1.1

func WithResourceLimits(limits ResourceLimits) TaskOption

WithResourceLimits 设置任务资源限制

func WithRetry

func WithRetry(n int) TaskOption

WithRetry 出错重试 n 次

func WithStartupDelay

func WithStartupDelay(delay time.Duration) TaskOption

WithStartupDelay 设置延迟启动时间

func WithTimeout

func WithTimeout(timeout time.Duration) TaskOption

WithTimeout 设置任务超时时间

type WorkerPool added in v0.1.1

type WorkerPool struct {
	// contains filtered or unexported fields
}

WorkerPool 管理一组工作协程,限制并发执行的任务数量

func NewWorkerPool added in v0.1.1

func NewWorkerPool(size int, logger Logger) *WorkerPool

NewWorkerPool 创建一个新的工作池

func (*WorkerPool) Start added in v0.1.1

func (wp *WorkerPool) Start()

Start 启动工作池

func (*WorkerPool) Stop added in v0.1.1

func (wp *WorkerPool) Stop()

Stop 停止工作池

func (*WorkerPool) Submit added in v0.1.1

func (wp *WorkerPool) Submit(task *Task)

Submit 提交任务到工作池

Jump to

Keyboard shortcuts

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