在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
前段需要在业务中实现某些时间段的简单定时任务,类似crontab的调度,因为业务会放在docker中,所以不想用直接用crontab,在网上搜了一下,发现一个开源的实现 Pomelo.AspNetCore.TimedJob,使用简单,但是因为是时间间隔执行,不太符合指定时间段要求,不过感谢有此开源代码,我在其基础上重新撸了个crontab的实现,并增加了一些功能,代码已放在Github上。 源码地址:https://github.com/aquilahkj/Light.Cron 使用Demo:https://github.com/aquilahkj/Light.Cron/tree/master/sample/Light.Cron.Sample 首先通过Nuget安装
配置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 } } 即可完成每分钟调用一次的定时任务
并在此基础上对一直一来对crontab使用的一些痛点进行了功能增强 跨时间段
月末日期
时间范围
多组调度计划 Light.Cron可以通过|符号支持多组调度计划, 如
简略写法 如下一级及其以之后的时间范围都是*, 可以简略不写, 如 * * * * * = * 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的定时任务,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对极客世界网站的支持! |
请发表评论