四时宝库

程序员的知识宝库

还在用crontab? 分布式定时任务了解一下

前言

日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue,推荐使用 go-queue 去处理,go-queue 本身也是基于 go-zero 开发的,其本身是有两种模式:

  • dq:依赖于beanstalkd ,适合延时、定时任务执行;

一起使用GO(golang) 来做一个后台管理系统系列 1 载入启动 gin 框架

有感而发,程序员这个行业,真的是一天不跑,不学习,就会被拍死在沙滩的行业 。熬夜,加班哪都小事。什么删库跑路基本操作(没有删除跑路的童鞋,不是好童鞋啊。)。哈哈。

咱今天就说这个学习新知识,学了不用,三天就忘。三天不写,重写吐血!!!(医院的wifi,还是不错的哈~~)

做个实例来,稳固记录下学的知识应用吧。

从本篇文章开始逐步带大家使用go gin web框架来做一个后台管理系统。本篇文章是一系列的,连续博文。大家可以关注后,持续观看。

golang定时任务实现gorm操作数据库部署配置及注意事项

golang作为一个工程性很强的语言,本示例将示例一个golang定时任务从开发到部署的整个过程。

一.首先,创建项目结构


本示例定时任务主要使用 github.com/robfig/cron

本示例启动了三个定时任务

1.是每天早上8点

2.是每隔5分钟执行一次

3.是每隔15分钟执行一次

二.golang的编译

本次编译是在linux系统下,注意和mac下的区别。

golang 定时器详解——Timer和Ticker

定时器: time.Timer

Timer是一个定时器, 代表未来的一个单一事件, 你可以告诉timer你要等待多长时间, 它提供一个channel, 在将来的那个时间那个channel提供了一个时间值。

package main
import (
    "fmt"
    "time"
)
func main() {
    //创建定时器, 2秒后, 定时器就会向自己的C字节发送一个time.Time类型的元素值
    timer1 := time.NewTimer(time.Second * 2)
    t1 := time.Now() //当前时间
    fmt.Printf("t1: %v\n", t1) //显示当前时间
    //2s后, 往timer1.C写数据, 有数据后, 就可以读取
    t2 := <-timer1.C //读取数据
    fmt.Printf("t2: %v\n", t2)
    //如果只是想单纯的等待的话, 可以使用time.Sleep来实现
    timer2 := time.NewTimer(time.Second * 2)
    <-timer2.C
    fmt.Println("2s后")
    time.Sleep(time.Second * 2)
    fmt.Println("再一次2s后")
    <-time.After(time.Second * 2) //定时2s, 阻塞2s, 2s后产生一个事件, 往channel写内容
    fmt.Println("再在一次2s后")
    timer3 := time.NewTimer(time.Second)
    go func() {
        <-timer3.C
        fmt.Println("Timer 3 expired")
    }()
    stop := timer3.Stop() //停止定时器
    if stop {
    fmt.Println("Timer 3 stopped")
    }
    fmt.Println("before")
    timer4 := time.NewTimer(time.Second * 3) //原来设置3s
    timer4.Reset(time.Second * 1) //重新设置时间
    <-timer4.C
    fmt.Println("after")
}

Cron表达式记忆口诀:“分时日月星期,重复任务不再迟。”

最近经常在linux/mac系统中使用自动化脚本的运行,管理定时任务生成报告或数据处理,备份等,crontab工具是个好助手。

crontab是一个Linux/Unix命令,用于安排作业在特定时间间隔内运行。每个用户都可以拥有自己的crontab文件,其中包含命令列表以及执行这些命令的时间。cron表达式成为管理定时任务的理想选择,广泛应用于服务器管理、数据处理等场景。

Go 每日一库之 cron

以下文章来源于GoUpUp ,作者大俊

简介

cron一个用于管理定时任务的库,用 Go 实现 Linux 中crontab这个命令的效果。之前我们也介绍过一个类似的 Go 库——gron。gron代码小巧,用于学习是比较好的。但是它功能相对简单些,并且已经不维护了。如果有定时任务需求,还是建议使用cron。

「源码分享」基于GF(Go Frame)的后台管理系统

今天给大家分享一款基于GF(Go Frame)的后台管理系统 ,完善的权限用户管理,致力于快速高效开发cms系统、督办系统、后续将加入流程审批、工作流引擎、项目管理、挂图作战、数据大屏等功能。

平台简介

微服务实践之分布式定时任务

承接上篇:上篇文章讲到改造 go-zero 生成的 app module 中的 gateway & RPC 。本篇讲讲如何接入 异步任务 以及 log的使用

Delay Job

日常任务开放中,我们会有很多异步、批量、定时、延迟任务要处理,go-zero中有 go-queue

基于 Go 语言的任务调度工具库

#记录我的2024#

Go语言定时器time.Tick,你也可能踩过的坑

遇到问题

最近在处理日志上报kafka时,为防止上报过程中因kafka异常而导致主业务协程阻塞,为此建立了如下日志上报模型:日志主协程负责将消息发给生产者,再由生产者异步写入到broker集群,日志work协程则将收集的日志项通过带缓冲的channel将其传递给日志主协程,从而达到解耦。因日志模型是一对多的关系,为防止work协程长时间等待,为此为每次传递过程设置超时机制,于是在work协程中很容易写出如下代码:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接