Go语言使用cron/v3实现定时任务
一、获取cron/v3包
go get github.com/robfig/cron/v3@v3.0.0
安装v3版本的cron包。
二、创建cron调度器
使用cron.New()创建一个新的Cron调度器:
c := cron.New()
三、添加定时任务
使用AddFunc方法添加定时任务,参数是cron表达式和任务函数:
c.AddFunc("* * * * *", task)
四、启动调度器
使用Start方法启动cron调度器,开始执行定时任务:
c.Start()
也可以使用Run方法,它会在后台启动goroutine运行调度器:
c.Run()
cron.Start() 和 cron.Run() 是cron/v3库中启动定时任务调度的两个主要方法,它们的区别是:
-
cron.Start() 直接启动调度,当前goroutine继续执行。如果当前goroutine退出,定时任务也会停止。 -
cron.Run() 内部会启动一个新的goroutine来调用Start方法,可以确保调度持续运行,当前goroutine可以继续做其他工作。
一个例子:
c := cron.New()
c.AddFunc("* * * * *", task)c.Start()
// 当前goroutine退出时,定时任务也会退出c.Run()
// 新goroutine会持续运行定时任务,当前goroutine继续执行
所以,如果需要定时任务持续运行,通常推荐使用cron.Run()方法。
另外,可以通过cron.Stop()来停止一个调度器。
总结区别:
- cron.Start():当前goroutine控制定时任务
- cron.Run():新goroutine运行定时任务,当前goroutine不受影响
日常使用中,cron.Run()配合cron.Stop()可以方便控制定时任务的生命周期。
五、cron表达式格式
cron表达式共5个字段,格式为:
* * * * *
- - - - -
| | | | |
| | | | ----- 星期 - 0-6(0表示星期天)
| | | ------- 月 - 1-12
| | --------- 日 - 1-31
| ----------- 小时 - 0-23
------------- 分钟 - 0-59
例如*/5 * * * *表示每5分钟执行一次。
六、设置时区
可以在创建调度器时指定时区:
loc, _ := time.LoadLocation("Asia/Shanghai")
c := cron.New(cron.WithLocation(loc))
也可以为每个任务设置时区:
c.AddFunc("@hourly", task, cron.WithLocation(loc))
在cron表达式中设置:
CRON_TZ=Asia/Tokyo * * * * *
七、停止调度器
使用Stop方法可以停止调度器:
c.Stop()
以上汇总了使用cron/v3实现Go语言定时任务的相关内容,包括包引用、调度器创建、任务添加、表达式格式、时区设置等,可以提供参考。
//0周日 1周一 2周二 3周三 4周四 5周五 6周六
c := cron.New(cron.WithLocation(loc))
c.AddFunc("33 9 ? * 5", func() {// 打印当前时间fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
})
c.AddFunc("34 9 ? * 5", func() {// 打印当前时间fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
})
c.Run()
更多内容参考:https://github.com/robfig/cron
相关文章:
Go语言使用cron/v3实现定时任务
一、获取cron/v3包 go get github.com/robfig/cron/v3v3.0.0安装v3版本的cron包。 二、创建cron调度器 使用cron.New()创建一个新的Cron调度器: c : cron.New()三、添加定时任务 使用AddFunc方法添加定时任务,参数是cron表达式和任务函数: c.AddFunc("* * * * *&quo…...
photoshop PS 查看像素坐标、像素颜色、像素HSB颜色
方法一 photoshop 菜单栏 窗口菜单->信息菜单项(F8), 在信息窗口里会有当前的 x,y坐标 方法二 photoshop 菜单栏 视图菜单->标尺菜单项(ctrlR) 宽度和高度边上都有标尺,默认的是厘米,右键单机宽度和高度边上…...
SpringCloud实用篇3----Docker
1.初识Docker 1.1 什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致…...
使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统
阿里云百科分享使用阿里云服务器建站教程,本文是搭建Discuz论坛,Discuz!是一款通用的社区论坛软件系统,它采用PHP和MySQL组合的基础架构,为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…...
gitee(码云)如何生成并添加公钥配置用户信息
一,简介 在使用Gitee的时候,公钥是必须的,无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器,然后配置自己的用户信息,方便日后拉取与上传代码。 二,步骤介绍 2.1 本地生成公钥 打开git ba…...
C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用
文章目录 创建一个QT快速应用创建项目创建主视图添加应用逻辑为视图添加动画素材文件 参考文章 创建一个QT快速应用 本教程使用内置的QML类型,介绍了Qt Quick的基本概念。有关可以选择的用户界面选项的更多信息,请参阅用户界面。 本教程描述了如何使用…...
用友时空KSOA SQL注入漏洞复现(HW0day)
0x01 产品简介 用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业最前沿的I需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话,帮助流通企业保护原有的IT投资,简化IT管理&#…...
java中编写代码:如何以sftp的形式把文件从服务器上面下载下来?(有账号和密码)
在Java中,你可以使用JSch库来实现通过SFTP协议下载文件。以下是一个简单的示例代码: import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class SFTPDownloa…...
【24择校指南】南京大学计算机考研考情分析
南京大学(A) 考研难度(☆☆☆☆☆) 内容:23考情概况(拟录取和复试分数人数统计)、院校概况、23初试科目、23复试详情、参考书目、各科目考情分析、各专业考情分析。 正文2178字,预计阅读:6分…...
IL汇编 ldarg 指令学习
IL汇编代码, .assembly extern mscorlib {} .assembly MathLib {.ver 1 : 0 : 1 : 0 }.module MathLib.dll.namespace MyMath { .class public ansi auto MathClass extends [mscorlib]System.Object{ .method public int32 GetSquare(int32) c…...
【ARM Cache 系列文章 9 番外篇 -- ARMv9 系列 Core 介绍】
文章目录 ARMv9 系列CoreARM Cortex-A510 介绍ARM Cortex-A715ARM Cortex-A720 ARMv9 系列Core 2021年5月Arm公布了其最新3款CPU和3款GPU核心设计,三款新CPU分别是旗舰核心Cortex-X2、高性能核心Cortex-A710、高能效核心Cortex-A510 CPU,三款新GPU核心则…...
章节7:Burp Intruder模块
章节7:Burp Intruder模块 参考资料 https://portswigger.net/burp/documentation/desktop/tools/intruder 01 Intruder模块作用与原理 原理 http://xxx.xx.com/bbs/index.php?namewuyanzu&mottogo 对请求参数进行修改,分析响应内容࿰…...
vue pc端项目el-upload上传图片时加水印
html代码: <a-uploadclass"avatar-uploader"list-type"picture-card":file-list"uploadFileList":custom-request"uploadDoneHandle":before-upload"beforeUpload":remove"removeHandle"v-decorat…...
ubuntu中redis+mysql安装使用
pip -V 回车(大写V):python包库安装路径 python -m site: python查找路径 1、redis ubuntu安装redis System has not been booted with systemd as init system (PID 1). Cant operate;该问题是systemctl start redis报错&#…...
若依-plus-vue启动显示Redis连接错误
用的Redis是windows版本,6.2.6 报错的主要信息如下: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method redisson threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect t…...
【C++11智能指针】
c智能指针 手动管理内存很容易造成内存泄漏,现代c的智能指针可以在很大程度上帮我们缓解这个问题,降低我们的手动管理内存的心智负担,智能指针有好几种,比如shared_ptr、unique_ptr还有weak_ptr 共享指针shared_ptr 共享指针会…...
如何实现Excel中多级数据联动
摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在类Excel表格应用中,常用的需求场景是根据单元格之间的数据联动&…...
使用Pytest集成Allure生成漂亮的图形测试报告
目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告 资料获取方法 前言 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架ÿ…...
opencv基础49-图像轮廓02-矩特征cv2.moments()->(形状分析、物体检测、图像识别、匹配)
矩特征(Moments Features)是用于图像分析和模式识别的一种特征表示方法,用来描述图像的形状、几何特征和统计信息。矩特征可以用于识别图像中的对象、检测形状以及进行图像分类等任务。 矩特征通过计算图像像素的高阶矩来提取特征。这些矩可以…...
什么是CSS Grid布局?什么是Flexbox布局?它们两者有什么不同?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS Grid布局⭐ Flexbox布局⭐ 不同之处⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web…...
从零入门性能测试:理论+JMETER实操,看完就能上手呈
一、环境准备 Free Spire.Doc for Python 是免费 Python 文档处理库,无需依赖 Microsoft Word,支持 Word 文档的创建、编辑、转换等操作,其中内置的 Markdown 解析能力,能高效实现 Markdown 到 Doc/Docx 格式的转换,且…...
多线程UI异常捕获实战 --- 解决Invoke与BeginInvoke的窗口句柄陷阱
1. 多线程UI编程的窗口句柄陷阱 刚接触Windows Forms多线程开发时,我经常遇到一个让人抓狂的错误:"在创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke"。这个错误就像个幽灵,有时候程序运行几天都不出现…...
VirtualEnv 21.2.1发布,更新内容丰富
VirtualEnv 21.2.1 正式发布,它能在一台机器上创建独立 Python 运行环境,隔离项目依赖,方便应用部署。此次更新包含多项功能改进和问题修复。VirtualEnv简介VirtualEnv 是一款实用工具,可在一台机器上创建多个独立 Python 运行环境…...
基于bert-base-chinese的工业级应用:文本分类、NER、问答系统落地实践
基于bert-base-chinese的工业级应用:文本分类、NER、问答系统落地实践 1. 为什么选择bert-base-chinese 如果你正在寻找一个能够处理中文文本的AI模型,bert-base-chinese绝对是个不错的选择。这个由Google发布的预训练模型,就像是中文自然语…...
让机器学习势活过1000K——物理学告知的原子能量模型实现前所未有的模拟稳定性
来源:ScienceAI 本文约1500字,建议阅读5分钟从几何恢复到构象优化,全面验证物理信息力场。机器学习势(MLP)被誉为连接量子力学精度与分子力学效率的圣杯。过去二十年,它们已经能以前所未有的精度重现能量和…...
ANSYS 2024 R1 HFSS 3D Layout与Q3D/RaptorX协同仿真新特性解析(附下载)
1. ANSYS 2024 R1版本带来的协同仿真新体验 高频电子设计工程师们注意了!ANSYS 2024 R1版本为HFSS 3D Layout与Q3D、RaptorX的协同仿真带来了重大升级。这次更新不仅仅是功能上的小修小补,而是从工作流整合到求解效率的全方位提升。作为一个长期使用ANSY…...
如何在6GB显存下运行专业级AI图像生成模型
如何在6GB显存下运行专业级AI图像生成模型 【免费下载链接】flux1-dev 项目地址: https://ai.gitcode.com/hf_mirrors/Comfy-Org/flux1-dev 当大多数AI创作者还在为动辄需要24GB显存的高端显卡而烦恼时,FLUX.1-dev FP8量化模型的出现彻底改变了游戏规则。这…...
2026深度评测:谷歌Gemini功能完整性全解析,技术旗舰的真实能力与短板
一、行业背景:大模型竞争从"参数内卷"走向"实用为王" 2026年AI行业已告别单纯参数竞赛,转向全场景功能覆盖、本土化适配、低门槛落地的实用化竞争。百度SEO与GEO优化成为技术内容核心流量入口,用户搜索关键词从"大模型哪家强"转向"Gemi…...
从矩阵SVD到张量T-SVD:算法原理与傅里叶变换的桥梁
1. 从矩阵到张量:理解SVD的核心思想 我第一次接触奇异值分解(SVD)是在处理图像压缩项目时。当时需要将一个20002000像素的图片压缩到原来大小的1/10,而传统的JPEG压缩算法会导致关键特征丢失。导师简单说了句"用SVD试试&quo…...
终极Windows文件夹颜色管理指南:用Folcolor革命性提升工作效率
终极Windows文件夹颜色管理指南:用Folcolor革命性提升工作效率 【免费下载链接】Folcolor Windows explorer folder coloring utility 项目地址: https://gitcode.com/gh_mirrors/fo/Folcolor 在Windows文件管理的日常工作中,你是否经常面对成百上…...
