溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在dotnet core如何實(shí)現(xiàn)類似crontab的定時(shí)任務(wù)

發(fā)布時(shí)間:2021-05-27 12:39:26 來源:億速云 閱讀:220 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)在dotnet core如何實(shí)現(xiàn)類似crontab的定時(shí)任務(wù),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

    首先通過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
  }
}

  即可完成每分鐘調(diào)用一次的定時(shí)任務(wù)

Light.Cron完全兼容Linux Crontab時(shí)間格式
*  *  *  *  *
分 時(shí) 日 月 周

第1列表示分鐘0~59

第2列表示小時(shí)0~23

第3列表示日期1~31

第4列表示月份1~12

第5列標(biāo)識(shí)號星期0~7(0和7表示星期天)
每天10點(diǎn)至16點(diǎn)
0 10-16 * * *

每隔兩個(gè)小時(shí)
0 */2 * * *

并在此基礎(chǔ)上對一直一來對crontab使用的一些痛點(diǎn)進(jìn)行了功能增強(qiáng)

跨時(shí)間段

當(dāng)時(shí)間段格式出現(xiàn)結(jié)束時(shí)間小于開始時(shí)間, 則代表由開始時(shí)間到下一級時(shí)間的開始時(shí)間, 如
每月1號22點(diǎn)到2號4點(diǎn)之間的時(shí)間段
* 22-4 1 * *
每周一至周五晚上22點(diǎn)到次日4點(diǎn)之間的時(shí)間段, 里面包含周六的0點(diǎn)-4點(diǎn), 不包含周一的0點(diǎn)-4點(diǎn)
* 22-4 * * 1-5

月末日期

日期格式中增加新增e標(biāo)記作為月末最后一天, 并且可以通過e+數(shù)字代表最后一天再往前倒數(shù)天數(shù), 如當(dāng)月共31天, 則e=31, e1=30, e2=29, e3=28. 當(dāng)月共30天, 則e=30, e1=29, e2=28, e3=27. 該語法同樣支持范圍
0 0 e3-e1 * *

時(shí)間范圍

Light.Cron可以通過新語法HH:mm-HH:mm將時(shí)分結(jié)合, 替換原有的時(shí)分設(shè)置, 如

每日9點(diǎn)30分至15點(diǎn)0分, 每隔一分鐘執(zhí)行一次

09:30-15:00 * * *

每日21點(diǎn)30分至次日的5點(diǎn)30分, 每隔5分鐘執(zhí)行一次

21:30-05:30/5 * * *

多組調(diào)度計(jì)劃

Light.Cron可以通過|符號支持多組調(diào)度計(jì)劃, 如

0點(diǎn)至11點(diǎn), 每分鐘執(zhí)行一次, 12點(diǎn)至23點(diǎn), 每5分鐘執(zhí)行一次
* 0-11 * * *|*/5 12-23 * * *

簡略寫法

如下一級及其以之后的時(shí)間范圍都是*, 可以簡略不寫, 如

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

關(guān)于“在dotnet core如何實(shí)現(xiàn)類似crontab的定時(shí)任務(wù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI