Nodejs 第五十二章(定时任务)

news2025/1/20 22:39:26

什么是定时任务?

定时任务是指在预定的时间点或时间间隔内执行的任务或操作。它们是自动化执行特定逻辑的一种方式,可用于执行重复性的、周期性的或计划性的任务。

定时任务通常用于以下情况:

  1. 执行后台任务:定时任务可用于自动执行后台任务,如数据备份、日志清理、缓存刷新等。通过设定适当的时间点或时间间隔,可以确保这些任务按计划进行,而无需手动干预。
  2. 执行定期操作:定时任务可用于执行定期操作,如发送电子邮件提醒、生成报告、更新数据等。通过设定适当的时间点,可以自动触发这些操作,提高效率并减少人工操作的需求。
  3. 调度任务和工作流:定时任务可以用于调度和协调复杂的任务和工作流程。通过设置任务之间的依赖关系和执

安装依赖

npm install node-schedule

node-schedule文档

一般定时任务都是用cron表达式去表示时间的

cron表达式

Cron表达式是一种用于指定定时任务执行时间的字符串表示形式。它由6个或7个字段组成,每个字段表示任务执行的时间单位和范围。

Cron表达式的典型格式如下:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └── 星期(0 - 6,0表示星期日)
│    │    │    │    └───── 月份(1 - 12)
│    │    │    └────────── 日(1 - 31)
│    │    └─────────────── 小时(0 - 23)
│    └──────────────────── 分钟(0 - 59)
└───────────────────────── 秒(0 - 59)
是否必需取值范围特殊字符
秒 Seconds[0, 59]* , - /
分钟 Minutes[0, 59]* , - /
小时 Hours[0, 23]* , - /
日期 DayofMonth[1, 31]* , - / ? L W
月份 Month[1, 12]或[JAN, DEC]* , - /
星期 DayofWeek[1, 7]或[MON, SUN]。若使用[1, 7]表达方式,1代表星期一,7代表星期日。* , - / ? L #
年 Year1970+- * /

每个字段可以接受特定的数值、范围、通配符和特殊字符来指定任务的执行时间:

  • 数值:表示具体的时间单位,如1、2、10等。
  • 范围:使用-连接起始和结束的数值,表示一个范围内的所有值,如1-5表示1到5的所有数值。
  • 通配符:使用*表示匹配该字段的所有可能值,如*表示每分钟、每小时、每天等。
  • 逗号分隔:使用逗号分隔多个数值或范围,表示匹配其中任意一个值,如1,3表示1或3。
  • 步长:使用/表示步长,用于指定间隔的数值,如*/5表示每隔5个单位执行一次。
  • 特殊字符:Cron表达式还支持一些特殊字符来表示特定的含义,如?用于替代日和星期字段中的任意值,L表示最后一天,W表示最近的工作日等。

以下是一些常见的Cron表达式示例:

  • * * * * *:每分钟执行一次任务。
  • 0 * * * *:每小时的整点执行一次任务。
  • 0 0 * * *:每天的午夜执行一次任务。
  • 0 0 * * 1:每周一的午夜执行一次任务。
  • 0 0 1 * *:每月的1号午夜执行一次任务。
  • 0 0 1 1 *:每年的1月1日午夜执行一次任务。

代码编写(掘金自动签到)

import schedule from 'node-schedule'
import request from 'request'
import config from './config.js'
schedule.scheduleJob('0 30 0 * * *', () => {
    request(config.check_url, {
        method: 'post',
        headers: {
            Referer: config.url,
            Cookie: config.cookie
        },
    }, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    })
})

config.js

export default {
    cookie: 'sessionid=你的cookie',
    url: 'https://juejin.cn/',
    check_url: 'https://api.juejin.cn/growth_api/v1/check_in?aid=你的aid&uid=你的uid'
}

image.png

aid uid cookie

aid和uid随便去个接口找一下就有

image.png

cookie

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NLP:spacy库安装与zh_core_web_sm配置

到公司来第一个项目竟然是偏文本信息抽取与结构化的,(也太高看我了┭┮﹏┭┮) 反正给机会了就上吧,我就一臭实习的,怕个啥。配置了两天的环境,也踩了不少坑,我把我的经历给大家分享一下&#…

FPGA高端项目:FPGA基于GS2971的SDI视频接收+OSD动态字符叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用…

弹性地基梁matlab有限元编程 | 双排桩支护结构 | Matlab源码 | 理论文本

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

微信小程序(五十二)开屏页面效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.使用控件模拟开屏界面 2.倒计时逻辑 3.布局方法 4.TabBar隐藏复现 源码&#xff1a; components/openPage/openPage.wxml <view class"openPage-box"><image src"{{imagePath}}"…

【算法训练营】:数字三角形,背包问题1,背包问题2(python实现)

数字三角形 时间限制&#xff1a;2 sec 空间限制&#xff1a;256 MB 问题描述 给定一个高度为 n 的“数字三角形”&#xff0c;其中第 i 行&#xff08;1<i<n&#xff09;有 i 个数。&#xff08;例子如下图所示&#xff09; 初始时&#xff0c;你站在“数字三角形”的顶…

leetCode刷题 4.寻找两个正序数组的中位数

目录 1. 思路 2. 解题方法 3. 复杂度 4. Code 题目&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&…

SOC设计:关于时钟门控的细节

有如下几个信号 输入信号 1、同步后的rstnsync_clk 2、时钟&#xff1a;clk 3、test_mode 4、软件控制信号&#xff1a;clk_sub_en 输出信号 1、clk_sub 功能&#xff1a;软件配置的使能信号clk_sub_en经过时钟clk 2拍同步处理后产生clk 域下的enable信号&#xff0c;然…

flink重温笔记(十一):Flink 高级 API 开发——flink 四大基石之 Checkpoint(详解存储后端)

Flink学习笔记 前言&#xff1a;今天是学习 flink 的第 11 天啦&#xff01;学习了 flink 四大基石之 Checkpoint &#xff08;检查点&#xff09;&#xff0c;主要是解决大数据领域持久化中间结果数据&#xff0c;以及取消任务&#xff0c;下次启动人可以恢复累加数据问题&…

【LeetCode】升级打怪之路 Day 15:二叉树解题的思维模式 —— 遍历、分解问题

今日题目&#xff1a; 226. 翻转二叉树101. 对称二叉树114. 二叉树展开为链表 目录 LC 226. 翻转二叉树 【easy】LC 101. 对称二叉树 ⭐⭐⭐LC 114. 二叉树展开为链表 ⭐⭐⭐ 今天的题目主要是对二叉树递归遍历的应用&#xff0c;东哥带你刷二叉树&#xff08;思路篇&#xff0…

砝码称重 蓝桥杯

在C中&#xff0c;fabs()和abs()都用于计算数字的绝对值&#xff0c;但它们之间有一些区别。 fabs(double x)&#xff1a;计算浮点数x的绝对值&#xff0c;返回一个double类型的结果。 abs(int x)&#xff1a;计算整数x的绝对值&#xff0c;返回一个int类型的结果。 数组的默…

航天民芯一级代理 MT3608 MT3608L 升压转换器 1.2MHZ

MT3608/MT3608L是恒定频率的6引脚SOT23电流模式升压转换器&#xff0c;适用于小型、低功耗应用。MT3608在1.2MHz&#xff0c;允许使用微小、低成本的频率高度不超过2mm的电容器和电感器。内部软启动可实现较小的浪涌电流和延长电池寿命。MT3608具有自动切换到脉冲的功能轻负载下…

【控制台警告】npm WARN EBADENGINE Unsupported engine

今天用webpack下载几个loader依赖&#xff0c;爆出了三个警告&#xff0c;大概的意思就是本地安装的node和npm的版本不是很匹配&#xff1f; 我的解决思路是&#xff1a; 先检查node和npm版本 然后去官网查找版本的对应 靠&#xff0c;官网404 Node.js (nodejs.org) 就找到…

Conda快速安装的解决方法(Mamba安装)

如果你的Conda安装了&#xff0c;你可能会发现一个问题&#xff0c;就是使用Conda install 安装某个软件时&#xff0c;会特别慢&#xff0c;这时候呢&#xff1f;你会上网去搜&#xff0c;然后大家解决的方法呢。一是告诉你镜像可以下载快一点&#xff0c;二是&#xff0c;Mam…

Sentinel 规则持久化,基于Redis持久化【附带源码】

B站视频讲解 学习链接&#x1f517; 文章目录 一、理论二、实践2-1、dashboard 请求Redis2-1-1、依赖、配置文件引入2-1-2、常量定义2-1-3、改写唯一id2-1-4、新Provider和Publisher2-1-5、改写V2 2-2、应用服务改造2-2-1、依赖、配置文件引入2-2-2、注册监听器 三、源码获取3…

keycloak18.0.0==源码编译打包

参照官方文档building.md mvn -Pdistribution -pl distribution/server-dist -am -Dmaven.test.skip clean install 报错 ---------- [ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.12.0:npm (npm-install-common) on project keycloak-theme…

MySQL存储过程2——if、case、while、repeat、loop、cursor、handler

1、if用作条件判断 1.1、语法结构 IF 条件1 THEN... ELSEIF 条件2 THEN... ELSE... END IF; 在if条件判断的结构中&#xff0c;Else if结构可以有多个&#xff0c;也可以没有。Else结构可以有&#xff0c;也可以没有 1.2、示例 根据定义的分数score变量&#xff0c;判断当…

mysql学习笔记8——常用5个内置方法

1count 对查询内容进行计数&#xff0c;并返回结果 2as as可以将查询出来结果赋予新名字 3sum sum可以查询某字段特定条件下的和值 4concat concat可以将多列数据合并成一列&#xff0c;只要concat&#xff08;&#xff09;即可 5group_concat group_concat可以把多列…

Linux|终端管理|如何踢掉操作系统内的用户

一&#xff0c; 关于终端的一些基本概念 tty、pty 和 pts 是在类 Unix 系统&#xff08;包括 Linux&#xff09;中与终端交互相关的概念。它们各自代表不同的方面&#xff0c;并且有着密切的关联。 tty (Teletype) tty 原指老式的电传打字机&#xff0c;后来泛指任何类型的终…

Echarts 配置项 series 中的 data 是多维度

文章目录 需求分析 需求 如下图数据格式所示&#xff0c;现要求按照该格式进行绘制折线图 分析 在绘制折线图时&#xff0c;通常我们的 series 中的 data 数据是这样的格式 option {title: {text: Stacked Area Chart},tooltip: {trigger: axis,axisPointer: {type: cross…

内容管理平台用这几个就够了,简单又好用

对于大多数企业和自由职业者来说&#xff0c;选择合适的内容管理平台已经成为一种必备的技能。良好的内容管理平台可以赋能你的团队&#xff0c;让你们更好地协作、管理和分享内容。不管你是要发布博客文章&#xff0c;还是需要管理复杂的项目文档&#xff0c;都可以通过内容管…