TimerTask

package module
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2022 License: AGPL-3.0 Imports: 7 Imported by: 0

README

定时任务库

获取组件库

go get -u gitee.com/tym_hmm/timer-task

使用方式

1.运行服务

TimerTask.TaskInstance().Run()

2.添加任务

  1. 定时执行(每间隔多少时间执行)

定案例为每2秒执行一次

#定时执行(每间隔多少时间执行)
#定案例为每2秒执行一次
taskNode := TimerTask.NewInfoNode("testJob")
taskNode.SetHandle(func(name string, infoNode *TimerTask.InfoNode, time string) {
	fmt.Println("任务执行回调" + name + ", time=>" + time)
})
taskNode.SetErrorHandle(func(name string, code int, message string) {
	fmt.Println("任务错误[code:" + strconv.Itoa(code) + ", message:" + message + "]")
})
taskNode.SetExecType(TimerTask.EXEC_TYPE_INTVAL)
taskNode.SetIntervalTime(2000)
TimerTask.TaskInstance().AddJob(taskNode)

2)每天执行

此案例为每天凌晨3:00执行

#每天执行
#此案例为每天凌晨3:00执行
taskNode := TimerTask.NewInfoNode("testJob")
taskNode.SetHandle(func(name string, infoNode *TimerTask.InfoNode, time string) {
    fmt.Println("任务执行回调" + name + ", time=>" + time)
})
taskNode.SetErrorHandle(func(name string, code int, message string) {
	fmt.Println("任务错误[code:" + strconv.Itoa(code) + ", message:" + message + "]")
})
taskNode.SetHour(3)//
TimerTask.TaskInstance().AddJob(taskNode)
_ = kelleyCrawler.CrawlerInstance().AddJob(infoNode)

3)每小时执行

此案例为间隔小时整点执行

当前时间为11:20 下次执行为12:00
当前时间为13:20 下次执行时间为:14:00

#每小时执行
taskNode := TimerTask.NewInfoNode("testJobHour")
taskNode.SetHandle(func(name string, infoNode *TimerTask.InfoNode, time string) {
	fmt.Println("任务执行回调" + name + ", time=>" + time)
})
taskNode.SetErrorHandle(func(name string, code int, message string) {
	fmt.Println("任务错误[code:" + strconv.Itoa(code) + ", message:" + message + "]")
})
taskNode.SetExecType(TimerTask.EXEC_TYPE_HOUR)
taskNode.SetHour(1)
TimerTask.TaskInstance().AddJob(taskNode)

其他

1)关闭日志打印 taskNode.IsDebug(false)

Documentation

Index

Constants

View Source
const (
	//轮循 间隔时间执行
	EXEC_TYPE_INTVAL Executions = 1
	//每天执行
	EXEC_TYPE_DAY Executions = 2

	//当天间隔小时执行整小时
	EXEC_TYPE_HOUR Executions = 3

	//失败重试最大次数
	EXEC_RETRY_MAC int32 = 5
	//后台运行(挂起)
	TASK_TYPE_BACKGROUND TASK_TYPE = 1

	//前台运行(阻塞)
	TASK_TYPE_FRONT TASK_TYPE = 2
)

常量配置

View Source
const (
	ERROR_NAME_EMPTY = 60001

	ERROR_HASH_CODE = 60002

	ERROR_JOB_ALREADY_EXIST = 60003
)
View Source
const (
	ANSIC         = "Mon Jan _2 15:04:05 2006"
	UnixDate      = "Mon Jan _2 15:04:05 MST 2006"
	RubyDate      = "Mon Jan 02 15:04:05 -0700 2006"
	RFC822        = "02 Jan 06 15:04 MST"
	RFC822Z       = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
	RFC850        = "Monday, 02-Jan-06 15:04:05 MST"
	RFC1123       = "Mon, 02 Jan 2006 15:04:05 MST"
	RFC1123Z      = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
	RFC3339       = "2006-01-02T15:04:05Z07:00"
	RFC3339Nano   = "2006-01-02T15:04:05.999999999Z07:00"
	Kitchen       = "3:04PM"
	Stamp         = "Jan _2 15:04:05"
	StampMilli    = "Jan _2 15:04:05.000"
	StampMicro    = "Jan _2 15:04:05.000000"
	StampNano     = "Jan _2 15:04:05.000000000"
	UTFALL_SECOND = "2006-01-02 15:04:05"
	UTFALL_MINUTE = "2006-01-02 15:04"
	UTFALL_HOUR   = "2006-01-02 15"
	UTFALL_DATE   = "2006-01-02"
	HOUR          = "15"
)

Variables

This section is empty.

Functions

func ByTimeStrGetHour

func ByTimeStrGetHour(timeStr string) (string, error)

*

通过时间字符串获取当前小时

func GeTomorrowTimeStrUnderline

func GeTomorrowTimeStrUnderline() string

func GetArbitrarilyTimeStr

func GetArbitrarilyTimeStr(increment time.Duration) string

func GetBetweenDates

func GetBetweenDates(sdate string, edate string) []string

* GetBetweenDates 根据开始日期和结束日期计算出时间段内所有日期 参数为日期格式,如:2020-01-01

func GetLastDayTimeStrUnderline

func GetLastDayTimeStrUnderline() string

func GetLastMonthStartAndEnd

func GetLastMonthStartAndEnd() (string, string)

* 获取上月开始日期和结束日期

func GetLastSevenDates

func GetLastSevenDates() []string

* 获取过去7天日期

func GetMonthStartAndEnd

func GetMonthStartAndEnd() (string, string)

* GetMonthStartAndEnd 获取月份的第一天和最后一天

func GetNowDayTimeStr

func GetNowDayTimeStr() string

func GetNowDayTimeStrUnderline

func GetNowDayTimeStrUnderline() string

func GetNowTime

func GetNowTime() time.Time

func GetNowTimeDate

func GetNowTimeDate() string

func GetNowTimeStr

func GetNowTimeStr() string

func OverFormatTime

func OverFormatTime(formatTime string) string

* 时间过去计算 解析字符串日期格式 :Y-m-d H:i:s

func TimePare

func TimePare(timeStr string) (time.Time, error)

Types

type Context

type Context struct {
	Uri    string
	Method HTTP_METHOD_TYPE
	Param  map[string]string
	Header map[string]string
	Cookie []*http.Cookie
	// contains filtered or unexported fields
}

* 上下文

type CrawlerApi

type CrawlerApi interface {
	/**
	设置运行方式
	@param crawlerType CRAWLER_TYPE   运行方式: kelleyCrawler.CONF_CRAWLER_TYPE_BACKGROUND(后台运行) | kelleyCrawler.CONF_CRAWLER_TYPE_FRONT(前台运行阻塞,默认)
	*/
	SetCrawlerType(taskType TASK_TYPE) *task

	//添加一个任务
	AddJob(node *InfoNode) *TaskError

	//启动事件
	StartHandle(handle func(tc CrawlerApi)) CrawlerApi

	/**
	任务执行
	*/
	Run()
}

* 主任务执行接口

func TaskInstance

func TaskInstance() CrawlerApi

type CrawlerItemRules

type CrawlerItemRules interface {
	/**
	返回页面
	@param currentPageUrl string 当前执行的地址
	@param stage int 当前执行的阶段
	@param content string 获取的内容
	@return bool true 执行下一个 false 不执行
	*/
	SuccessHandle(context *Context, stage int32, content string) bool
	//错误提示
	ErrorHandle(currentPageUrl string, stage int32, tryTime int32, code int, err error)
}

* 单个爬取规则 所有规则需集成此接口

type ErrorHandle

type ErrorHandle func(name string, code int, message string)

type Executions

type Executions int

执行类型

type HTTP_METHOD_TYPE

type HTTP_METHOD_TYPE string

type InfoNode

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

* 节点任务信息

func NewInfoNode

func NewInfoNode(name string) *InfoNode

* 任务node @param name string 任务名称 @param handle NodeHandle 成功处理回调 @param errorHandle ErrorHandle 错误处理回调

func (*InfoNode) ExecType

func (t *InfoNode) ExecType() Executions

func (*InfoNode) GetErrorHandle

func (t *InfoNode) GetErrorHandle() ErrorHandle

func (*InfoNode) GetHandle

func (t *InfoNode) GetHandle() NodeHandle

func (*InfoNode) GetName

func (t *InfoNode) GetName() string

func (*InfoNode) Hour

func (t *InfoNode) Hour() int

func (*InfoNode) IntervalTime

func (t *InfoNode) IntervalTime() int32

func (*InfoNode) IsDebug

func (t *InfoNode) IsDebug(Debug bool)

func (*InfoNode) SetDelay

func (t *InfoNode) SetDelay(delayTime int)

func (*InfoNode) SetErrorHandle

func (t *InfoNode) SetErrorHandle(errorHandle ErrorHandle)

func (*InfoNode) SetExecType

func (t *InfoNode) SetExecType(execType Executions)

func (*InfoNode) SetHandle

func (t *InfoNode) SetHandle(handle NodeHandle)

func (*InfoNode) SetHour

func (t *InfoNode) SetHour(hour int)

func (*InfoNode) SetIntervalTime

func (t *InfoNode) SetIntervalTime(intervalTime int32)

type NodeHandle

type NodeHandle func(name string, infoNode *InfoNode, time string)

type TASK_TYPE

type TASK_TYPE int

type TaskError

type TaskError struct {
	Code    int
	Message string
}

func NewCrawlerError

func NewCrawlerError(code int, message string) *TaskError

func (TaskError) Error

func (c TaskError) Error() string

type TimeHelper

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

func NewTime

func NewTime(time time.Time) *TimeHelper

func (*TimeHelper) GetDay

func (t *TimeHelper) GetDay() int

func (*TimeHelper) GetHour

func (t *TimeHelper) GetHour() int

func (*TimeHelper) GetMinute

func (t *TimeHelper) GetMinute() int

func (*TimeHelper) GetMonth

func (t *TimeHelper) GetMonth() int

func (*TimeHelper) GetSecond

func (t *TimeHelper) GetSecond() int

func (*TimeHelper) GetWeekDay

func (t *TimeHelper) GetWeekDay() *TimeWeek

func (*TimeHelper) GetYear

func (t *TimeHelper) GetYear() int

func (*TimeHelper) ToAll

func (t *TimeHelper) ToAll() string

func (*TimeHelper) ToDate

func (t *TimeHelper) ToDate() string

func (*TimeHelper) WeekByDate

func (t *TimeHelper) WeekByDate(time time.Time) *TimeWeek

type TimeWeek

type TimeWeek struct {
	Year    int
	Month   int
	Weekday int
}

type TimerApi

type TimerApi interface {
}

* 定时任务接口

Jump to

Keyboard shortcuts

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