首页 > 其他分享 >cron 中开启协程执行任务

cron 中开启协程执行任务

时间:2024-03-27 21:47:06浏览次数:21  
标签:03 27 协程 32 31 开启 cron 20 2024

cron 中开启协程执行任务

package cron

import (
	"project/internal/jobs"

	"github.com/robfig/cron/v3"
)

func Run() {
	c := cron.New(cron.WithSeconds())

    // 每分钟的第 40 秒执行
	c.AddJob("40, * * * * *", jobs.OneMinuteJob{})

	// 启动一个 goroutine 去执行的
	c.Start()

	// 阻止主线程停止
	select {}
}

package jobs

import (
	"fmt"
	"sync"
	"time"
)

var fullTimeFormat = "2006-01-02 15:04:05"

type OneMinuteJob struct {
}

var wg sync.WaitGroup

func (om OneMinuteJob) Run() {
    // 缓冲通道
	ch := make(chan int, 3)
	for i := 0; i < 10; i++ {
		ch <- i
		wg.Add(1)
		go test(ch)
	}

	close(ch)
	wg.Wait()
}

func test(ch chan int) {
	defer wg.Done()

	time.Sleep(time.Second * 3)
	i := <-ch
	fmt.Println("i =", i, time.Now().Format(fullTimeFormat))
}

zhpj@localhost project % go run main.go cron
i = 0 2024-03-27 20:31:43
i = 1 2024-03-27 20:31:43
i = 2 2024-03-27 20:31:43

i = 3 2024-03-27 20:31:46
i = 4 2024-03-27 20:31:46
i = 5 2024-03-27 20:31:46

i = 6 2024-03-27 20:31:49
i = 7 2024-03-27 20:31:49
i = 8 2024-03-27 20:31:49

i = 9 2024-03-27 20:31:52



i = 0 2024-03-27 20:32:43
i = 1 2024-03-27 20:32:43
i = 2 2024-03-27 20:32:43

i = 3 2024-03-27 20:32:46
i = 4 2024-03-27 20:32:46
i = 5 2024-03-27 20:32:46

i = 6 2024-03-27 20:32:49
i = 7 2024-03-27 20:32:49
i = 8 2024-03-27 20:32:49

i = 9 2024-03-27 20:32:52

参考文章:

Go 并发编程(一):协程 goroutine、channel、协程池

标签:03,27,协程,32,31,开启,cron,20,2024
From: https://www.cnblogs.com/zhpj/p/18100305/open-the-coroutine-execution-task-in-cron-2ilqmf

相关文章

  • 原来内存条要开启xmp模式
    明明我购买的是3600mhz的内存条,但是在资源管理器里面显示2600mhz问客服才知道需要开始xmp在bios里面开启重启后一看到主板的页面就按F2或delete我一直按都没有反应查阅资料发现应该是主板设置了快速启动,usb键盘在启动时不通电,那么按就没反应然后我在一见到光的时候就强制关......
  • 达梦开启慢查询
     1.修改参数文件[dmdba@localhostgproj]$moresqllog.iniBUF_TOTAL_SIZE=10240#SQLsLogBufferTotalSize(K)(1024~1024000)BUF_SIZE=1024#SQLsLogBufferSize(K)(50~409600)BUF_KEEP_CNT=6......
  • C# 异步与 Unity 协程(实例讲解)
    C#异步编程实例:假设我们有一个需要从Web获取数据的简单应用。我们可以使用C#的异步编程模型来避免UI线程被HTTP请求阻塞1usingSystem.Net.Http;2usingSystem.Threading.Tasks;34publicclassAsyncExample5{6publicasyncTask<string>FetchDataFromWebAsync(st......
  • Linux系统安装完成之后如何开启root的ssh登录
    Linux系统安装完成之后如何开启root的ssh登录默认情况下,root用户是没有密码的,而且出于安全考虑,SSH服务不允许root用户直接登录。但在某些情况下,你可能需要以root用户身份通过SSH远程登录服务器,或者为root用户设置密码。修改root用户密码首先,登录到Linux系统。如果你是通......
  • 使用C++20协程和io_uring优雅地实现异步IO
    距离2020年已经过去很久了,各大编译器对于C++20各项标准的支持也日趋完善,无栈协程也是其中之一,所以我就尝试着拿协程与io_uring实现了一下proactor模式,这篇文章用来记录一下我的设计和想法。除此之外,我们能在网络上找到许多优秀的C++20协程的教程以及许多优秀的协程应用(库),但从协程......
  • 国赛报名开启 | 2024第十九届全国大学生智能汽车竞赛-天途创意组智慧巡检比赛
    ......
  • Cron 表达式解析
    Cron表达式解析Cron表达式是一种强大的工具,用于在特定时间自动执行计划任务。无论是在服务器维护、数据库备份,还是在发送定时邮件等场景,cron表达式都能提供精确的时间控制。Cron表达式的基本结构Cron表达式由6或7个由空格分隔的时间字段组成,每个字段代表了不同的时间单位:......
  • Swoole 源码分析之 Coroutine 协程模块
    首发原文链接:Swoole源码分析之Coroutine协程模块大家好,我是码农先森。引言协程又称轻量级线程,但与线程不同的是;协程是用户级线程,不需要操作系统参与。由用户显式控制,可以在需要的时候挂起、或恢复执行。通过协程程序可以在执行的过程中保存当前的状态,并在恢复后从该状态处......
  • 华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代
    本文分享自华为云社区《华为云亮相KubeConEU2024,以持续开源创新开启智能时代》,作者:华为云头条。近日,在巴黎举办的云原生顶级峰会KubeConEU2024上,华为云首席架构师顾炯炯在“CloudNativexAI:以持续开源创新开启智能时代”的主题演讲中指出,云原生和AI技术的融合,是推动产业......
  • 多任务之协程
    协程协程我们是使用gevent模块实现的,而gevent是对greenlet进行的封装,而greenlet又是对yield进行封装。要理解gevent就要从yield开始。要理解yield的作用我们就要先理解可迭代对象与迭代器一、可迭代对象与迭代器1>可迭代对象迭代是访问集合元素的一种方式。迭代器是一个......