幸运蛋蛋pc开奖
这篇文章主要介绍了在dotnet core实现类似crontab的定时任务,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

 前段需要在业务中实现某些时间段的简单定时任务,类似crontab的调度,因为业务会放在docker中,所以不想用直接用crontab,在网上搜了一下,发现一个开源的实现 Pomelo.AspNetCore.TimedJob,使用简单,但是因为是时间间隔执行,不太符?#29616;?#23450;时间段要求,不过?#34892;?#26377;此开源代码,我在其基础?#29616;?#26032;撸了个crontab的实现,并增加了一些功能,代码已放在Github上。

  源码地址:https://github.com/aquilahkj/Light.Cron

  使用Demo:https://github.com/aquilahkj/Light.Cron/tree/master/sample/Light.Cron.Sample

  首先通过Nuget安装

PM> Install-Package Light.Cron

配置StartUp

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();
  }
} 

编写crontab方法

[CrontabJob]
public class CrontabObject
{
  [CrontabSchedule("crontab1", "* * * * *")]
  public void DoSomeThing()
  {
    // Todo
  }
} 

即可完成每分钟调用一次的定时任务

Light.Cron完全兼容Linux Crontab时间格式
*  *  *  *  *
分 时 日 月 周

第1列表示分钟0~59

第2列表示小时0~23

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~7(0和7表示星期天)
每天10点至16点
0 10-16 * * *

每隔两个小时
0 */2 * * *

并在此基础上对一直一来对crontab使用的一些痛点进行了功能增强

跨时间段

当时间段格式出现结束时间小于开始时间, 则代表由开始时间到下一级时间的开始时间, 如
每月1号22点到2号4点之间的时间段
* 22-4 1 * *
每周一至周五晚上22点到次日4点之间的时间段, 里面包含周六的0点-4点, 不包含周一的0点-4点
* 22-4 * * 1-5

月末日期

日期格式中增?#26377;?#22686;e标记作为月末最后一天, 并且可以通过e+数?#25191;?#34920;最后一天再往前倒数天数, 如当月共31天, 则e=31, e1=30, e2=29, e3=28. 当月共30天, 则e=30, e1=29, e2=28, e3=27. 该语法同样支?#22336;段?br> 0 0 e3-e1 * *

时间?#27573;?/strong>

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 * * *

简略写法

如下一级及其以之后的时间?#27573;?#37117;是*, 可以简略不写, 如

* * * * * = *
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

总结

以上所述是小编给大家介绍的在dotnet core实现类似crontab的定时任务,希望对大家有所帮助,如果大家有任?#25105;晌是?#32473;我留言,小编会及时回复大家的。在此也非常?#34892;?#22823;家对爱安网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

最新资讯
“双十一”空调市场混战 降价放量后或带来消费透支

“双十一”空调市场混

与国庆?#24179;?#21608;遭遇“寒流”不同,空调市场在双十一终于“
“双十一”攻守道:多场景应用 下沉市场发力

“双十一”攻守道:多场

双十一不能绝?#28304;?#34920;中国消费,它更多的是利用了?#20309;?#30340;心
“双十一”金融机构众生相:争夺消费信贷庞大蛋糕

“双十一”金融机构众

相比信用卡机?#20849;?#37325;?#20013;?#25552;升支付安全性与便捷性,众多助
郭明錤:2019年Apple Watch出货量是2100-2300万部

郭明錤:2019年Apple Wa

2020年在苹果公司主要的硬件产品中,Apple Watch出货量
电商巨头鏖战“双十一”:下沉市场成为新战场

电商巨头鏖战“双十一

双十一不能绝?#28304;?#34920;中国消费,它更多的是利用了?#20309;?#30340;心
各平台战况:天猫2684亿京东2044亿 苏宁拼多多未公布

各平台战况:天猫2684

不过,在双11的计算时间上,各家电商平台的计算方法各有不
最新文章
shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中

shell脚本将Oracle服

这篇文章主要介绍了shell脚本将Oracle服务器中数据定
详解Linux ln 命令

详解Linux ln 命令

Linux 中的文件分为 Hard Link 和 Symbolic Link 两种
Linux 查看端口的占用情况并?#39029;?#24182;杀死占用进程的方法

Linux 查看端口的占用

这篇文章主要介绍了Linux 查看端口的占用情况并?#39029;?#24182;
shell中长命令的换行处理方法示例

shell中长命令的换行

这篇文章主要给大家介绍了关于shell中长命令的换行处
详解在dotnet core实现类似crontab的定时任务

详解在dotnet core实

这篇文章主要介绍了在dotnet core实现类似crontab的定
Linux忘记root密码进入单用户模式?#35874;?#36816;行级别?#35874;?#29992;户

Linux忘记root密码进

这篇文章主要介绍了Linux忘记root密码进入单用户模式
幸运蛋蛋pc开奖 斗地主二人现金版 大小单双玩法有什么特点 欢乐生肖是什么彩 九线拉王游戏 全天重庆时时彩大小单双计划 时时彩历史开奖结果查询 欢乐斗棋牌捕鱼辅助 中国银行股赚钱吗 微信猜大小平台 南方双彩网手机版下