Light.Cron
是一个使用简单的基于dotnet standard 2.0
的定时任务组件, 通过执行对象和对执行方法的Attribute
进行定时任务配置
nuget 安装
PM> Install-Package Light.Cron
[CrontabJob] public class CrontabObject { [CrontabSchedule("crontab1", "* * * * *")] public void DoSomeThing() { // Todo } }
执行对象需要标记CrontabJobAttribute
, 执行方法需要标记CrontabScheduleAttribute
CrontabScheduleAttribute
属性 | 说明 |
---|---|
Name | 指定Crontab方法的唯一名称 |
Schedule | 调度计划, 如* * * * * |
AllowConcurrentExecution | 允许并发执行, 如上一次执行还没结束, 下一次执行时间已到, 允许同时执行 |
RunImmediately | 启用时不判断Schedule 是否符合, 马上执行 |
AutoEnable | CrontabService启动时自动启用 |
系统会通过使用依赖注入方式生成一个Singleton
的CrontabService
对象进行定时任务调度.
通过使用IServiceCollection.AddCrontabJob
依赖注入配置, 再使用IApplicationBuilder.UseCrontabJob
启动CrontabService
.
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddCrontabJob(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseCrontabJob(); app.UseMvc(); } }
CrontabService
默认会扫描EntryAssembly
程序集中的有CrontabJobAttribute
的类以及该类中有CrontabScheduleAttribute
的方法, 如要扫描其他程序集, 可以在AddCrontabJob
中可以使用CrontabOptionsBuilder
进行配置
属性/方法 | 说明 |
---|---|
ScanAllAssembly | 扫描所有程序集 |
SetAssembly | 扫描指定的程序集 |
Light.Cron
完全兼容Linux Crontab时间格式, 如下
* * * * *
分 时 日 月 周
第1列表示分钟0~59 第2列表示小时0~23 第3列表示日期1~31 新增e
标记作为月末最后一天 第4列表示月份1~12 第5列标识号星期0~7(0和7表示星期天)
每天早上6点
0 6 * * *
每天10点至16点
0 10-16 * * *
每隔两个小时
0 */2 * * *
每月1日,15日和最后1日的早上5点
0 5 1,15,e * *
当时间段格式出现结束时间小于开始时间, 则代表由开始时间到下一级时间的开始时间, 如
每月1号22点到2号4点之间的时间段
* 22-4 1 * *
每周一至周五晚上22点到次日4点之间的时间段, 里面包含周六的0点-4点, 不包含周一的0点-4点
* 22-4 * * 1-5
日期格式中增加新增e
标记作为月末最后一天, 并且可以通过e+数字
代表最后一天再往前倒数天数, 如当月共31天, 则e=31, e1=30, e2=29, e3=28. 当月共30天, 则e=30, e1=29, e2=28, e3=27. 该语法同样支持范围
0 0 e3-e1 * *
Light.Cron
可以通过新语法HH:mm-HH:mm
将时分结合, 替换原有的时分设置, 如
每日9点30分至15点0分, 每隔一分钟执行一次
09:30-15:00 * * *
每日21点30分至次日的5点30分, 每隔5分钟执行一次
21:30-05:30/5 * * *
Light.Cron
可以通过|
符号支持多组调度计划, 如
0点至11点, 每分钟执行一次, 12点至23点, 每5分钟执行一次
* 0-11 * * *|*/5 12-23 * * *
如下一级及其以之后的时间范围都是*
, 可以简略不写, 如
* * * * * = *
30 9 * * * = 30 9
09:30-15:00 * * * = 09:30-15:00
0 0 1 * * = 0 0 1
0 0 1 2-5 * = 0 0 1 2-5
一:项目结构: 解释说明: lts:管理 子包的jar 包的xml 的项目 lts-admin : 界面管理,有个问题是通过脚本启动是空白,必须通过容器来启动了 lts-core: 主要是netty 交互核心代码,zookerr 订阅中心 lts-jobclient: 反馈的客户端 lts-jobtracker: 派遣分布式的任务 lts-monitor:监控自身应用的jvm lts-spring
light task schedule(以下简称lts)的任务调度是在jobTracker中实现的。 以下关于任务队列的数据存储以mysql为例子。 jobTracker中进行调度的任务需要jobClient提交,当接收任务提交对任务的相关信息进行存储的同时也会开始对相应的任务进行调度。 以mysql为例子,对于一个节点组nodeGroup的cron形式的定时任务的定时调度涉及三张表。 lts
cron相关文件: /etc/cron.monthly/ /etc/cron.weekly/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.d/ /etc/crontab /etc/cron.deny /etc/cron.allow /var/spool/cron /var/log/cron 一、crond简介 当安装完成操作系统后,默认会安装此服务
本文向大家介绍Spring boot基于ScheduledFuture实现定时任务,包括了Spring boot基于ScheduledFuture实现定时任务的使用技巧和注意事项,需要的朋友参考一下 一、 背景 接上一篇,完成存储过程的动态生成后,需要构建定时任务执行存储过程 二、 环境 1.此随笔内容基于spring boot项目 2.数据库为mysql 5.7.9版本 3.jd
Celery 是一个 Python 的任务队列,包含线程/进程池。曾经有一个 Flask 的集成, 但在 Celery 3 重构了内部细节后变得不必要了。本指导补充了如何妥善在 Flask 中使用 Celery 的空白,但假设你已经读过了 Celery 官方文档中的教程 使用 Celery 的首要步骤 安装 Celery Celery 提交到了 Python Package Index (PyPI
在请求返回后继续执行章节中,我们介绍了一种实现的方法,这里我们 介绍一种更优雅更通用的方法:ngx.timer.at()。 ngx.timer.at 会创建一个 Nginx timer。在事件循环中,Nginx 会找出到期的 timer,并在一个独立的协程中执行对应的 Lua 回调函数。 有了这种机制,ngx_lua 的功能得到了非常大的扩展,我们有机会做一些更有想象力的功能出来。比如 批量提交和
在 Blade 2.0.8 版本之后加入了 cron 表达式来完成定时执行任务的需求。 你只需要在处理任务的方法上添加一个 @Schedule 注解,然后编写 cron 表达式即可。 Blade 的任务系统提供你创建、停止、获取任务列表的 API。 创建一个任务 @Bean public class SimpleTask { @Schedule(cron = "* * * * * ?")
定时任务即在指定的时间点对关联资源进行指定动作。 定时任务即在指定的时间点对关联资源进行指定动作。目前仅支持对虚拟机进行定时开关机、重启等操作。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “运维工具/常用工具/定时任务” 菜单项,进入定时任务页面。 新建定时任务 该功能用于创建定时任务。 在定时任务页面,单击列表上方 “新建” 按钮,进入新建定时任务也没。 配置以下参数: 指定
帮助用户快速部署定时任务。 定时任务(CronJob)可以根据设定的策略周期性的运行job任务。CronJob的详细介绍内容,请参考kubernets官方文档-CronJobs 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “容器/应用/定时任务” 菜单项,进入定时任务页面。 定时说明 请参考Cron # 定时设置举例 */1 * * * * # 表示每分钟创建一个job任务。