本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:【j2开奖】Agenda ——Node.js轻量级任务调度库

时间:2017-03-22 02:28来源:报码现场 作者:本港台直播 点击:
在 node 的一些小型项目中我们可以使用 Agenda 模块来完成定时任务。从个人角度上来说并不建议使用 node完成定时任务,毕竟 node 擅长的是 IO 而不是 CPU 计算。 与其他定时任务比较,

wzatv:【j2开奖】Agenda ——Node.js轻量级任务调度库

  在 node 的一些小型项目中我们可以使用 Agenda 模块来完成定时任务。从个人角度上来说并不建议使用 node完成定时任务,毕竟 node 擅长的是 IO 而不是 CPU 计算。

  与其他定时任务比较, Agenda 有着最小的开销以及持久化的优势。即便程序重启了,也不会丢失现有任务。

  Agenda 简介

  Agenda 是基于 node 的一个轻量级任务调度类库,它的优势在于轻量级、持久化、使用简单。

  1) 持久化

  Agenda 引入mongodb从而实现持久化 。Agenda 将所有的任务(job)存储到mongodb中,对于使用mongodb做数据库的项目有天然优势。

  2) 结构

wzatv:【j2开奖】Agenda ——Node.js轻量级任务调度库

  在 Agenda 启动时会将预定义好的 processors 遍历一遍,从mongodb中查询出符合条件 job(这里的 job 可能不止一条)。对于遍历查询出来的job:如果时间已到或者已经是过去时间,那么立即执行;如果时间还未到,开奖,那么就延迟执行。

  3)API

  Agenda 之所以受欢迎,与其简单灵活的 API 是分不开的。

  Agenda 使用步骤

  使用简单是 Agenda 一大优势,只需短短的几行代便可使任务按照既定的计划运行。

  1、 实例化

  Agenda 实例的创建,在创建过程中主要做了:

  连接mongo数据库

  初始化内部变量

  2、 定义 processor

  processor 指的是:在 job 按照需求到达指定的执行时间点时,需要执行的操作,也就是实际的业务逻辑。这部分逻辑是保存在内存中的,一但程序挂掉processor 也会丢失。

  所以最好在程序启动的时候定义 processor,这样下次重启程序,processor 会被重新保存到内存当中。

wzatv:【j2开奖】Agenda ——Node.js轻量级任务调度库

  定义一个定时更新用户信息的 job,define 方法有三个参数:

  1)name

  表示任务的名称,任务不可以与已有任务重名,否则会覆盖已有任务

  2)options

  表示设置任务属性:

  concurrency: 表示并发数,可运行任务的最大数量

  lockLimit:任务被锁住的最大数量(Agenda 在运行一个任务时,会将当前任务锁住,以以防止重复执行任务)

  lockLifetime:任务被锁住的时间,如果 done() 调用,任务将自动解锁。

  priority:任务执行的优先级(分为lowest、low、normal、high、highest、number)

  以上代就对其并发量 concurrency 做了限制,设置同时可运行任务数为5。

  3)processor

  第三个参数(processor)即回调函数中实现我们的处理逻辑。回调函数有两个参数,job 表示当前执行的任务信息,而回调函数的第二个参数 done 是可选的:

wzatv:【j2开奖】Agenda ——Node.js轻量级任务调度库

  done 的使用还是需要根据实际情况而定。例如这段代码中,我们省略了 options 参数,这时 Agenda 内部就会使用默认参数。我们省略了回调函数中的 done,这就意味着我们在回调函数中的逻辑可以使用异步调用。

  3、 创建定义任务

  处理逻辑定义完成之后,我们需要进行定义任务,规定任务的执行时间、周期等。对于任务的定义,Agenda 为我们准备了以下4个方法:

  every指定的任务每隔一个固定的时间执行一次

  schedule计划任务,此方法跟 Linux 的计划任务几乎一致

  now立即执行任务

  create创建一个任务

  1)every

  根据业务的需求,如果某些任务需要在项目整个生命周期一致运行的的时候,我们可以使用 every 方法。例如,在一定间隔时间抓取天气情况。

wzatv:【j2开奖】Agenda ——Node.js轻量级任务调度库

  (每隔5分钟获取一次天气)

  2)schedule

  定时周期性任务很常见,主要作用是将任务计划在指定时间运行一次:

  (明天早上七点获取天气)

  3)now

  立即执行任务:

  (马上获取天气)

  4、 思考与探索

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容