首页 > 其他分享 >strapi系列-如何创建一个定时任务-Cron Jobs

strapi系列-如何创建一个定时任务-Cron Jobs

时间:2023-01-12 02:11:06浏览次数:45  
标签:触发 15 10 cron 59 Cron strapi Jobs

Cron 是什么?

Cron 有多种用途。 Cron Jobs 用于安排服务器上的任务运行。它们最常用于自动化系统管理或维护。然而,它们也与 Web 应用程序的构建相关。 Web 应用程序可能需要在各种情况下定期执行特定操作。

为什么使用 Cron ?

定期进行的计划活动,Cron 允许将任意函数安排在特定日期执行,并具有可选的递归规则。Cron在任何给定时间只使用一个计时器,而不是每秒钟/分钟重新评估即将到来的作业。

怎么使用 Cron ?

我们先来了解一下Cron Jobs 结构


*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

规则

Seconds:可出现,- * / 四个字符,有效范围为0-59的整数
Minutes:可出现,- * / 四个字符,有效范围为0-59的整数
Hours:可出现,- * / 四个字符,有效范围为0-23的整数
DayofMonth:可出现,- * / ? L W C八个字符,有效范围为0-31的整数
Month:可出现,- * / 四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek:可出现,- * / ? L C #四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year:可出现,- * / 四个字符,有效范围为1970-2099年

举例

0 0 2 1 * ? * 表示在每月的1日的凌晨2点调度任务
0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
0 15 10 ? 6L 2002-2006 表示200-2006年的每个月的最后一个星期五上午10:15执行作业

由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置.
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

定义cron作业并让它们在要求的时间运行步骤

  • 创建适当的文件。
  • 在服务器配置文件中启用cron作业。

创建 cron job

在./config/cron-tasks.js定义任务,使用如下结构:

/**

        *    *    *    *    *    *
        ┬    ┬    ┬    ┬    ┬    ┬
        │    │    │    │    │    |
        │    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
        │    │    │    │    └───── month (1 - 12)
        │    │    │    └────────── day of month (1 - 31)
        │    │    └─────────────── hour (0 - 23)
        │    └──────────────────── minute (0 - 59)
        └───────────────────────── second (0 - 59, OPTIONAL)

 */

module.exports = {

    // 每周一 9am
    '0 9 * * 1': () => {
        console.log(1)
    },
    '0 58 1 ? * *': () => {
        console.log(2)
    },
    '*/1 * * * *': () => {
        console.log(3)
    }
}

启用cron作业

要启用cron作业,请设置cron。在服务器配置文件config\server.ts中启用为true并声明作业

const cronTasks = require("./cron-tasks");

module.exports = ({ env }) => ({
  host: env("HOST", "0.0.0.0"),
  port: env.int("PORT", 1337),
  cron: {
    enabled: true,
    tasks: cronTasks,
  },
});

运行成功~

大功告成~

  • 今天就写到这里啦~小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

标签:触发,15,10,cron,59,Cron,strapi,Jobs
From: https://www.cnblogs.com/sugartang/p/17045314.html

相关文章

  • strapi系列-如何去除接口里的attributes以及 data key,配置关联数据等
    我们先来创建一个接口,然后看一下正常接口返回的数据格式是什么样子创建表以及字段添加一条数据配置接口权限我暂时给了这个接口PUBLIC权限,用来测试使用postman进......
  • crontab 不生效
    最近做一个守护程序,方案是放到crontab里,定时去执行shell脚本,使用crontab-e配置,没问题,crontab-e会修改、/var/spool/cron/root里的内容,另外一种方案是修改/etc/crontab......
  • cron表达式
    cron表达式基本含义字段名是否必须允许的值允许的特定字符秒(Seconds)是0-59*/,-分(Minute)是0-59*/,-时(Hours)是0-23*/,-日(Day......
  • docker中crontab无法执行导入计划任务问题解决
    问题描述:crontab无法执行导入计划任务解决: ⊙查看文件16进制 hexdump-c./crontab/defalut   发现有\r;crontab中只能直接\n⊙vim文件修改编码   setfile......
  • 使用crontab设置定时脚本
    转自于:http://t.zoukankan.com/whiteprism-p-6548935.htmlcrontab的几种常见用法:1、编辑一个文本文件,写上任务列表,然后运行crontab文件名2、crontab-e,就可直接在vi界面......
  • Apollo实现cron语句的热配置
    GitHub项目地址Gitee项目地址Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范......
  • Springboot设置定时任务,从数据库中获取cron表达式 DEMO
    适用场景:需要在项目运行时改动定时任务执行时间,可将cron表达式放在缓存或者数据库中代码如下:(省略了获取cron的方法,需要自己根据情况获取) importorg.springframework.......
  • 【linux】crontab使用方法
    一、crontab基本用法1.1cron服务cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。servicecrondstart//启动服务servicecrondstop......
  • 图文并茂strapi 4.5.5自定义搭建指南以及数据库字段名接口返回mapping分析
    strapi是什么?基于Nodejs的开源免费CMS框架为什么选择它?基于nodejs,100%JavaScript,上手迅速可轻松创建功能强大且可自定义的API可以使用任何喜欢的数据库先决条件首......
  • gin框架中结合cron实现定时任务执行
    gin框架中结合cron实现定时任务执行背景:一个hr管理系统中,需要每日定时处理员工离职操作,需要每天定时执行删除账号等操作,在这使用定时任务比较方便,比如每天晚21点执行实现......