CN107391188A - 一种控制定时任务的方法和装置 - Google Patents
一种控制定时任务的方法和装置 Download PDFInfo
- Publication number
- CN107391188A CN107391188A CN201710581436.8A CN201710581436A CN107391188A CN 107391188 A CN107391188 A CN 107391188A CN 201710581436 A CN201710581436 A CN 201710581436A CN 107391188 A CN107391188 A CN 107391188A
- Authority
- CN
- China
- Prior art keywords
- timed task
- timestamp
- item
- timed
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种控制定时任务的方法和装置。本申请提供的控制定时任务的方法,包括:当服务首次运行时,以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将所述定时任务项记录到定时任务数据库表中;当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。本申请提供的控制定时任务的方法和装置,可保证及时地执行定时任务。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种控制定时任务的方法和装置。
背景技术
某些服务运行时,往往要处理一些定时任务。其中,定时任务指以某一时刻为基准时间点,约定在距基准时间点预定时长要执行的任务。例如,音频服务运行时,以音频服务开始运行的时刻为基准时间点,约定距基准时间点5s时执行任务A,距基准时间点10s时执行任务B,任务A和任务B即为定时任务。
服务在运行时,会由于某些原因崩溃掉(例如,由于服务器的原因),这时,需要通过手动方式或监控方式使服务重启。但是,当服务重启后,此时,服务中已创建好的定时任务由于服务崩溃而不存在,当再次创建定时任务、执行定时任务时,存在时间差,导致定时任务处理不及时。结合上面的例子,例如,当音频服务运行2秒后,音频服务崩溃,此时,通过手动方式使音频服务重启,这时,重新创建任务A和任务B,这样,任务A和任务B将分别在距服务重启的时刻5s和10s后被执行(任务A和任务B晚执行了2s),任务A和任务B处理不及时。
发明内容
有鉴于此,本申请提供一种控制定时任务的方法和装置,以解决现有技术中服务重启后,定时任务执行不及时的问题。
本申请第一方面提供一种控制定时任务的方法,包括:
当服务首次运行时,以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将所述定时任务项记录到定时任务数据库表中;
当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
进一步地,在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序之前,所述方法还包括:
判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务;
若是,则在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
进一步地,所述定时任务项中还记录有定时任务允许的延时时间,当中止运行的所述服务重启时,所述方法还包括:
从所述定时任务数据库表中查找执行时间戳小于或者等于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值;
若所述差值小于或者等于查找到的定时任务项中的延时时间,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。
进一步地,所述定时任务数据库表中记录有多个服务对应的定时任务项,当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项,具体包括:
从所述定时任务数据库表中查找与所述服务的定时任务匹配的定时任务项;
在与所述服务的定时任务匹配的定时任务项中,查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项。
进一步地,所述以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项之前,所述方法还包括:
确定各定时任务的执行时刻,并将确定出的执行时刻转换成执行时间戳。
本申请第二方面提供一种控制定时任务的装置,包括:创建模块、查找模块和处理模块,其中,
所述创建模块,用于当服务首次运行时,以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将所述定时任务项记录到定时任务数据库表中;
所述查找模块,用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
所述处理模块,用于在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
进一步地,所述装置还包括:判断模块,其中,
所述判断模块,用于判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务;
所述处理模块,具体用于在所述判断模块判断查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为不可延时执行类任务时,在查找到的定时任务项中记录的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
进一步地,所述定时任务项中还记录有定时任务允许的延时时间,所述查找模块,还用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳小于或者等于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
所述处理模块,还用于计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值,并在所述差值小于或者等于查找到的定时任务项中的延时时间时,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。
进一步地,所述定时任务数据库表中记录有多个服务对应的定时任务项,
所述查找模块,具体用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找与所述服务的定时任务匹配的定时任务项,以及在与所述服务的定时任务匹配的定时任务项中,查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项。
进一步地,所述创建模块,还用于在以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项之前,确定各定时任务的执行时刻,并将确定出的执行时刻转换成执行时间戳。
本申请提供的控制定时任务的方法和装置,当服务首次运行时,通过以上述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将上述定时任务项记录到定时任务数据库表中,进而当中止运行的上述服务重启时,可从上述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项,进而在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。这样,中止运行的上述服务重启后,不需要重新建立定时任务,可基于服务首次运行时生成的定时任务项来执行定时任务,由于执行时间戳为定时任务的绝对执行时间,这样,可保证按时执行定时任务。
附图说明
图1为本申请控制定时任务的方法实施例一的流程图;
图2为本申请控制定时任务的方法实施例二的流程图;
图3为本申请控制定时任务的方法实施例三的流程图;
图4为本申请控制定时任务的方法实施例四的流程图;
图5为本申请一示例性实施例示出的控制定时任务的装置所在设备的硬件结构图;
图6为本申请控制定时任务的装置实施例一的结构示意图;
图7为本申请控制定时任务的装置实施例二的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请提供一种控制定时任务的方法和装置,以解决现有技术中服务重启后,定时任务执行不及时的问题。
本申请提供的控制定时任务的方法和装置,可应用于计算机、移动终端等运行服务的设备。
图1为本申请控制定时任务的方法实施例一的流程图。该实施例的执行主体可以是单独的控制定时任务的装置,也可以是集成有控制定时任务的装置的其他设备,例如,可以是集成有控制定时任务的装置的计算机或集成有控制定时任务的装置的移动终端等。下面以执行主体为单独的控制定时任务的装置为例进行说明。请参照图1,本实施例提供的控制定时任务的方法,可以包括:
S101、当服务首次运行时,以上述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将上述定时任务项记录到定时任务数据库表中。
需要说明的是,定时任务的执行时间戳是指执行该定时任务的时刻对应的时间戳;定时任务对应的启动程序标识是指该定时任务要执行的启动程序的标识。
具体的,本步骤中,可以从服务的任务信息集合中获取各个定时任务的信息,即从服务的任务信息集合中获取该服务中待执行的各个定时任务的时间策略(即各个定时任务的基准时间点、及各个定时任务是在距基准时间点多久后被执行)和各个定时任务要执行的启动程序的标识。进一步地,当获取到各个定时任务的信息后,可根据各个定时任务的时间策略和服务首次运行时的时间信息,确定各个定时任务的执行时刻,并将确定出的执行时刻转化成执行时间戳。最后以各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将生成的定时任务项记录到定时任务数据库表中。
需要说明的是,定时任务数据库表存储在指定的持久性存储区域。该指定的持久性存储区域是用户根据实际需要指定的,例如,该指定的持久性存储区域可以为控制定时任务的装置所在设备的硬盘。需要说明的是,将定时任务数据库表存储在指定的持久性存储区域,这样,即使服务因为某种原因崩溃,存储在持久性存储区域的定时任务数据库表也不会因为服务崩溃而丢失。此外,在一可能的实现方式中,也可以将定时任务的标识记录到该定时任务对应的定时任务项中。
此外,定时任务数据库表中可以只记录与该服务的定时任务匹配的定时任务项,也可以记录与多个服务的定时任务匹配的定时任务项。下面以定时任务数据库表中记录有与多个服务的定时任务匹配的定时任务项为例进行说明。
下面以服务为音频服务为例进行说明。例如,在一可能的实现方式中,音频服务在运行时要处理三个定时任务(分别为任务A、任务B、任务C,其中,A、B、C为定时任务的标识),其中,该音频服务的时间策略为:以音频服务开始运行的时刻为基准时间点,约定在距基准时间点10s时执行任务A;在距基准时间点20s时执行任务B;在距基准时间点30s时执行任务C。且定时任务A、B、C要执行的启动程序的标识分别为:processDate、processValue、Sum。当前时刻为2017年6月12日11:8:20,此时音频服务首次运行。这样,按照该音频服务的时间策略,音频服务在2017年6月12日11:8:20启动后,10后执行定时任务A,则确定定时任务A的执行时刻为2017年6月12日11:8:30,对应的执行时间戳为1497236910;20后执行定时任务B,则确定定时任务B的执行时刻为2017年6月12日11:8:40,对应的执行时间戳为1497236920;30s后执行定时任务C,则确定定时任务C的执行时刻为2017年6月12日11:8:50,对应的执行时间戳为1497236930。这样,确定了各定时任务的执行时间戳后,本步骤中,就以各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将生成的定时任务项记录到定时任务数据库表中。结合上面的例子,本实施例中,就生成如表1所示的定时任务项,并将生成的定时任务项记录到定时任务数据库表中,得到如表2所示的定时任务数据库表(以定时任务数据库表中记录有与多个服务的定时任务匹配的定时任务项为例)。
表1生成的定时任务项
A | 1497236910 | processDate |
B | 1497236920 | processValue |
C | 1497236930 | Sum |
表2定时任务数据库表
定时任务 | 标识 | 执行时间戳 | 启动程序标识 |
1 | A | 1497236910 | processDate |
2 | B | 1497236920 | processValue |
3 | C | 1497236930 | Sum |
4 | D | 1497236980 | open |
…… | …… | …… | …… |
S102、当中止运行的上述服务重启时,从上述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项。
具体的,当中止运行的上述服务重启时,为避免该服务中的定时任务处理不及时,本步骤中,就从定时任务数据库表中查找与执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务。需要说明的是,与服务的定时任务匹配的定时任务项是指记录的启动程序标识为该服务中某一定时任务要执行的启动程序的标识的定时任务项。
结合上面的例子,音频服务在2017年6月12日11:8:20首次运行,音频服务在2017年6月12日11:8:25中止运行,并于2017年6月12日11:8:30重启,音频服务重启时刻对应的时间戳为1497236910,本步骤中,就从定时任务数据库表中查找执行时间戳大于1497236910的定时任务项、且与音频服务的定时任务匹配的定时任务项,即查找启动程序标识为音频服务中各个定时任务要执行的启动程序的标识、且执行时间戳大于1497236910的定时任务项。需要说明的是,当定时任务数据库表为仅记录有与该服务的定时任务匹配的定时任务项的定时任务数据库表时,此时,本步骤中,直接从定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项即可。
在表2所示实施例中,定时任务数据库表为记录有多个服务对应的定时任务项的定时任务数据库表,本步骤中,可按如下方法来查找与执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项,该方法包括以下步骤:
(1)从上述定时任务数据库表中查找与上述服务的定时任务匹配的定时任务项。
(2)在与上述服务的定时任务匹配的定时任务项中,查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项。
结合上面的例子,音频服务的定时任务要执行的启动程序标识分别为processDate、processValue、Sum。本步骤中,就从定时任务数据库表中查找启动程序标识为processDate、processValue、Sum的定时任务项。进一步地,在查找到的三个定时任务项中查找执行时间戳大于1497236910的定时任务项。本实施例中,最终查找到的定时任务项为执行时间戳为1497236920和1497236930的定时任务项。
S103、在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
本步骤中,可以将查找到的定时任务项记录到任务队列,以在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务中的启动程序标识对应的启动程序。结合上面的例子,本步骤中,就在执行时间戳1497236920对应的时刻执行启动程序标识processValue对应的启动程序,在执行时间戳1497236930对应的时刻执行启动程序标识Sum对应的启动程序。
需要说明的是,本实施例提供的方法,服务在运行时,可通过判断定时任务数据库表中是否包含与上述服务的定时任务匹配的定时任务项来确定服务是首次运行,还是重启。具体的,当确定定时任务数据库表中不包含与上述服务的定时任务匹配的定时任务项时,确定服务是首次运行,这时,以该服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将上述定时任务项记录到定时任务数据库表中。当确定定时任务数据库表中包含与上述服务的定时任务匹配的定时任务项时,确定服务此次运行为中止后重启,此时,就从定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项,进而在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。这样,可保证及时地执行定时任务。
本实施例提供的方法,当服务首次运行时,通过以上述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将上述定时任务项记录到定时任务数据库表中,进而当中止运行的上述服务重启时,可从上述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项,进而在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。这样,中止运行的上述服务重启后,不需要重新建立定时任务,可基于服务首次运行时生成的定时任务项来执行定时任务,由于执行时间戳为定时任务的绝对执行时间,这样,可保证按时执行定时任务。
可选地,在本申请一可能的实现方式中,所述方法还包括:
当中止运行的所述服务重启时,将所述服务中各定时任务对应的启动程序标识和启动程序的对应关系记录到内存中;
所述在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序,具体包括:
在查找到的定时任务项中的执行时间戳对应的时刻到达时,根据已记录启动程序标识和启动程序的对应关系,确定查找到的定时任务项中的启动程序标识对应的启动程序,并执行确定出的启动程序。
具体的,在服务重启时,可以将服务中各定时任务对应的启动程序标识和启动程序的对应关系记录到内存中,这样,在查找到的定时任务项中的执行时间戳对应的时刻到达时,可根据已记录启动程序标识和启动程序的对应关系,确定查找到的定时任务项中的启动程序标识对应启动程序,并执行确定出的启动程序,避免了将要执行的启动程序从存储区域读取到内存的过程,可保证定时任务的正确执行。
图2为本申请定时任务管理方法实施例二的流程图。请参照图2,在上述实施例的基础上,本实施例提供的方法,步骤S103之前,还可以包括:
S201、判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务。
S202、若是,在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
需要说明的是,本实施例提供的方法,定时任务对应的启动任务标识,还用于表征定时任务的类型信息。其中,定时任务的类型信息包括不可延时执行类任务和可延时执行类任务。此外,各启动任务标识表征的类型信息具体为可延时执行类任务还是不可延时执行类任务,是用户根据实际需要设定的。例如,在一实施例中,规定某些启动任务标识表征不可延时执行类任务,另一些启动任务标识表征可延时执行类任务。结合上面的例子,例如,规定启动程序标识processDate和processValue表征可延时执行类任务,启动程序标识Sum和open表征不可延时执行类任务。
具体的,本实施例中,在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序之前,先判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务,进而在判断查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为不可延时执行类任务,才在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。这样,可提高本方法的兼容性。
结合上面的例子,查找到的定时任务项为执行时间戳为1497236920和1497236930的定时任务项。此时,经过判断,确定执行时间戳为1497236920的定时任务项中的启动程序标识(processValue)表征该定时任务项对应的定时任务为可延时执行类任务;执行时间戳为1497236930的定时任务项中的启动程序标识(Sum)表征该定时任务项对应的定时任务为不可延时执行类任务,因此,本实施例提供的方法,仅在执行时间戳1497236930对应的时刻执行启动程序标识Sum对应的启动程序
需要说明的是,若查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为可延时执行类任务,此时,则按照现有方法执行该定时任务项对应的定时任务(即需要重新创建任务,并执行任务)。结合上面的例子,即对于执行时间戳为1497236930的定时任务项对应的定时任务,则按照现有的方法处理该定时任务。
本实施例提供的方法,在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序之前,通过判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务,进而在判断查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为不可延时执行类任务,才在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。而在查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为可延时执行类任务时,按照现有方法处理该定时任务。这样,即可保证不可延时执行类的未超时的定时任务按时执行,同时还可以提高本方法的兼容性。
图3为本申请控制定时任务的方法实施例三的流程图。在上述实施例的基础上,本实施例提供的方法,上述定时任务项中还记录有定时任务允许的延时时间,请参照图3,本实施例提供的方法,当中止运行的所述服务重启时,所述方法还包括:
S301、从上述定时任务数据库表中查找执行时间戳小于或者等于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项。
需要说明的是,定时任务允许的延时时间是用户根据定时任务的业务类型预先设定好的。请参照表3(表3为本申请另一示例性实施例示出的定时任务数据库表),本实施例提供的方法,定时任务项中还记录有定时任务允许的延时时间。
表3定时任务数据库表
定时任务 | 标识 | 执行时间戳 | 启动程序标识 | 允许的延时时间 |
1 | A | 1497236910 | processDate | 5S |
2 | B | 1497236920 | processValue | 20s |
3 | C | 1497236930 | Sum | 10s |
…… | …… | …… | …… | …… |
具体的,本实施例提供的方法,定时任务项中还记录有定时任务允许的延时时间,这样,当中止运行的上述服务重启时,就从定时任务数据库表中查找执行时间戳小于或者等于服务重启对应的时间戳、且与上述服务的定时任务匹配的定时任务项。例如,在一实施例中,服务重启时刻为2017年6月12日11:8:40,服务重启时刻对应的时间戳为1497236920,且定时任务数据库表如表3所示,此时,就从表3中查找与上述服务的定时任务匹配的、且执行时间戳小于或者等于1497236920的定时任务项(结合上面的例子,即从定时任务数据库表中查找执行时间戳小于或者等于1497236920、且启动程序标识为processDate、processValue、Sum的定时任务项)。例如,表3所示实施例中,查找到的定时任务项为执行时间戳分别为1497236910和1497236920的定时任务项。
S302、计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值。
结合上面的例子,本步骤中,就计算服务重启时刻对应的时间戳(1497236920)与1497236910的差值,及服务重启时刻对应的时间戳(1497236920)与1497236920的差值。
S303、若上述差值小于或者等于查找到的定时任务项中的延时时间,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。
具体的,经过步骤S302,计算服务重启时刻对应的时间戳(1497236920)与1497236910的差值为10,大于该定时任务项中的延时时间(5S),此时,按照现有方法执行该任务。计算服务重启时刻对应的时间戳(1497236920)与1497236920的差值为0,小于该定时任务项中的延时时间(2S),此时,立即执行Sum对应的启动程序。
本实施例提供的方法,通过在定时任务项中记录定时任务允许的延时时间,进而当中止运行的上述服务重启时,从上述定时任务数据库表中查找执行时间戳小于小于或者等于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项,并计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值,进而在上述差值小于或者等于查找到的定时任务项中的延时时间,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。这样,可保证及时地执行已经超时的定时任务,降低已经超时的定时任务的超时时间。
图4为本申请定时任务管理方法实施例四的流程图。本实施例涉及的是控制定时任务的整个过程。请参照图4,本实施例提供的方法,包括:
S401、当服务首次运行时,以上述服务中待执行的各定时任务的执行时间戳、各定时任务对应的启动程序标识和各定时任务允许的延时时间生成定时任务项,并将上述定时任务项记录到定时任务数据库表中。
需要说明的是,定时任务允许的延时时间是用户根据定时任务的业务类型预先设置好的。
具体的,该步骤的具体实现方法及实现原理可以参见实施例一步骤S101的描述,在此不再赘述。
S402、当中止运行的上述服务重启时,从上述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的第一定时任务项以及执行时间戳小于或者等于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的第二定时任务项。
具体的,该步骤的具体实现方法及实现原理可以参见实施例一步骤S102以及实施例三步骤S301的描述,在此不再赘述。
S403、判断第一定时任务项中的启动程序标识是否表征第一定时任务项对应的定时任务为不可延时执行类任务。
具体的,该步骤的具体实现方法及实现原理可以参见实施例二步骤S201的描述,在此不再赘述。
S404、若是,则在第一定时任务项中的执行时间戳对应的时刻执行第一定时任务项中的启动程序标识对应的启动程序。
具体的,该步骤的具体实现方法及实现原理可以参见实施例一步骤S103及实施例二步骤S202的描述,在此不再赘述。
S405、计算服务重启时刻对应的时间戳与第二定时任务项中的执行时间戳的差值,并在上述差值小于或者等于第二定时任务项中的延时时间时,立即执行第二定时任务项中的启动程序标识对应的启动程序。
具体的,该步骤的具体实现方法及实现原理可以参见实施例三步骤S302和S303的描述,在此不再赘述。
需要说明的是,步骤S403和步骤S405没有执行上的先后顺序,其可以是同时执行的。
本实施例提供的方法,服务首次运行时,通过以服务中待执行的各定时任务的执行时间戳、各定时任务对应的启动程序标识和各定时任务允许的延时时间生成定时任务项,并将上述定时任务项记录到定时任务数据库表中。这样,当中止运行的上述服务重启后,可基于服务首次运行时建立的定时任务项来执行定时任务,可保证未超时的定时任务按时执行,并保证已超时的定时任务及时执行,以降低已超时的定时任务的超时时间。此外,本实施例提供的方法,兼容性好。
与前述控制定时任务的方法的实施例相对应,本申请还提供了控制定时任务的装置的实施例。
本申请控制定时任务的装置的实施例可以应用在计算机、移动终端等上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示(图5为本申请一示例性实施例示出的控制定时任务的装置所在设备的硬件结构图),为本申请控制定时任务的装置所在计算机的一种硬件结构图,除了图5所示的处理器、内存、以及非易失性存储器之外,实施例中装置所在的计算机通常根据该控制定时任务的装置的实际功能,还可以包括其他硬件,对此不再赘述。
图6为本申请控制定时任务的装置实施例一的结构示意图。请参考图6,本实施例提供的控制定时任务的装置,可以包括:创建模块100、查找模块200和处理模块300,其中,
所述创建模块100,用于当服务首次运行时,以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将所述定时任务项记录到定时任务数据库表中;
所述查找模块200,用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
所述处理模块300,用于在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
本实施例的装置,可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本申请控制定时任务的装置实施例二的结构示意图。请参照图7,在上述实施例的基础上,本实施例提供的装置,还包括:判断模块400,其中,
所述判断模块400,用于判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务;
所述处理模块400,具体用于在所述判断模块300判断查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为不可延时执行类任务时,在查找到的定时任务项中记录的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
本实施例的装置,可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,所述定时任务项中还记录有定时任务允许的延时时间,所述查找模块200,还用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳小于或者等于服务重启时刻对应的时间戳、且与上述服务的定时任务匹配的定时任务项;
所述处理模块300,还用于计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值,并在所述差值小于或者等于查找到的定时任务项中的延时时间时,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。
本实施例的装置,可用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,所述定时任务数据库表中记录有多个服务对应的定时任务项,
所述查找模块200,具体用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找与所述服务的定时任务匹配的定时任务项,以及在与所述服务的定时任务匹配的定时任务项中,查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项。
进一步地,所述创建模块100,还用于在以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项之前,确定各定时任务的执行时刻,并将确定出的执行时刻转换成执行时间戳。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种控制定时任务的方法,其特征在于,包括:
当服务首次运行时,以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将所述定时任务项记录到定时任务数据库表中;
当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
2.根据权利要求1所述的方法,其特征在于,在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序之前,所述方法还包括:
判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务;
若是,则在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
3.根据权利要求1所述的方法,其特征在于,所述定时任务项中还记录有定时任务允许的延时时间,当中止运行的所述服务重启时,所述方法还包括:
从所述定时任务数据库表中查找执行时间戳小于或者等于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值;
若所述差值小于或者等于查找到的定时任务项中的延时时间,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。
4.根据权利要求1或2所述的方法,其特征在于,所述定时任务数据库表中记录有多个服务对应的定时任务项,当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项,具体包括:
从所述定时任务数据库表中查找与所述服务的定时任务匹配的定时任务项;
在与所述服务的定时任务匹配的定时任务项中,查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项之前,所述方法还包括:
确定各定时任务的执行时刻,并将确定出的执行时刻转换成执行时间戳。
6.一种控制定时任务的装置,其特征在于,包括:创建模块、查找模块和处理模块,其中,
所述创建模块,用于当服务首次运行时,以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项,并将所述定时任务项记录到定时任务数据库表中;
所述查找模块,用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳大于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
所述处理模块,用于在查找到的定时任务项中的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:判断模块,其中,
所述判断模块,用于判断查找到的定时任务项中的启动程序标识是否表征查找到的定时任务项对应的定时任务为不可延时执行类任务;
所述处理模块,具体用于在所述判断模块判断查找到的定时任务项中的启动程序标识表征查找到的定时任务项对应的定时任务为不可延时执行类任务时,在查找到的定时任务项中记录的执行时间戳对应的时刻执行查找到的定时任务项中的启动程序标识对应的启动程序。
8.根据权利要求6所述的装置,其特征在于,所述定时任务项中还记录有定时任务允许的延时时间,所述查找模块,还用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找执行时间戳小于或者等于服务重启时刻对应的时间戳、且与所述服务的定时任务匹配的定时任务项;
所述处理模块,还用于计算服务重启时刻对应的时间戳与查找到的定时任务项中的执行时间戳的差值,并在所述差值小于或者等于查找到的定时任务项中的延时时间时,立即执行查找到的定时任务项中的启动程序标识对应的启动程序。
9.根据权利要求6或7所述的装置,其特征在于,所述定时任务数据库表中记录有多个服务对应的定时任务项,
所述查找模块,具体用于当中止运行的所述服务重启时,从所述定时任务数据库表中查找与所述服务的定时任务匹配的定时任务项,以及在与所述服务的定时任务匹配的定时任务项中,查找执行时间戳大于服务重启时刻对应的时间戳的定时任务项。
10.根据权利要求6-8任一项所述的装置,其特征在于,所述创建模块,还用于在以所述服务中待执行的各定时任务的执行时间戳和各定时任务对应的启动程序标识生成定时任务项之前,确定各定时任务的执行时刻,并将确定出的执行时刻转换成执行时间戳。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581436.8A CN107391188A (zh) | 2017-07-17 | 2017-07-17 | 一种控制定时任务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581436.8A CN107391188A (zh) | 2017-07-17 | 2017-07-17 | 一种控制定时任务的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107391188A true CN107391188A (zh) | 2017-11-24 |
Family
ID=60339554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710581436.8A Pending CN107391188A (zh) | 2017-07-17 | 2017-07-17 | 一种控制定时任务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391188A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600077A (zh) * | 2018-03-01 | 2018-09-28 | 聚好看科技股份有限公司 | 一种定时消息处理方法及消息管理服务器 |
CN110532114A (zh) * | 2019-09-04 | 2019-12-03 | 浪潮云信息技术有限公司 | 基于消息队列的定时任务管理系统及分配方法 |
CN111078383A (zh) * | 2019-12-24 | 2020-04-28 | 浙江诺诺网络科技有限公司 | 一种定时任务的管理方法、装置、设备及存储介质 |
CN111324302A (zh) * | 2018-12-13 | 2020-06-23 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN112286944A (zh) * | 2020-12-28 | 2021-01-29 | 中国航空油料集团有限公司 | 工业故障诊断系统的运行方法 |
CN114138433A (zh) * | 2021-11-18 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种任务定时策略的方法、装置及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005107757A (ja) * | 2003-09-30 | 2005-04-21 | Matsushita Electric Ind Co Ltd | プログラムの暴走検出方法およびプログラムの暴走検出装置 |
CN103810281A (zh) * | 2014-02-20 | 2014-05-21 | 浪潮集团有限公司 | 一种基于云计算的定时任务实现数据同步的方法 |
CN104516745A (zh) * | 2013-09-27 | 2015-04-15 | 北京新媒传信科技有限公司 | 一种运行定时任务的方法及系统 |
CN105072267A (zh) * | 2015-07-31 | 2015-11-18 | 努比亚技术有限公司 | 移动终端及其定时控制方法 |
CN105224401A (zh) * | 2015-09-08 | 2016-01-06 | 深圳市永兴元科技有限公司 | 定时任务控制方法及装置 |
US20160006666A1 (en) * | 2014-07-07 | 2016-01-07 | Microsoft Corporation | Tenant control in initiating atomic platform tasks |
CN105930200A (zh) * | 2016-04-19 | 2016-09-07 | 汉柏科技有限公司 | 基于精简配置的为虚拟机创建定时器的方法及装置 |
-
2017
- 2017-07-17 CN CN201710581436.8A patent/CN107391188A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005107757A (ja) * | 2003-09-30 | 2005-04-21 | Matsushita Electric Ind Co Ltd | プログラムの暴走検出方法およびプログラムの暴走検出装置 |
CN104516745A (zh) * | 2013-09-27 | 2015-04-15 | 北京新媒传信科技有限公司 | 一种运行定时任务的方法及系统 |
CN103810281A (zh) * | 2014-02-20 | 2014-05-21 | 浪潮集团有限公司 | 一种基于云计算的定时任务实现数据同步的方法 |
US20160006666A1 (en) * | 2014-07-07 | 2016-01-07 | Microsoft Corporation | Tenant control in initiating atomic platform tasks |
CN105072267A (zh) * | 2015-07-31 | 2015-11-18 | 努比亚技术有限公司 | 移动终端及其定时控制方法 |
CN105224401A (zh) * | 2015-09-08 | 2016-01-06 | 深圳市永兴元科技有限公司 | 定时任务控制方法及装置 |
CN105930200A (zh) * | 2016-04-19 | 2016-09-07 | 汉柏科技有限公司 | 基于精简配置的为虚拟机创建定时器的方法及装置 |
Non-Patent Citations (1)
Title |
---|
朱哲明: ""基于Quartz的消息沟通平台的研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600077A (zh) * | 2018-03-01 | 2018-09-28 | 聚好看科技股份有限公司 | 一种定时消息处理方法及消息管理服务器 |
CN108600077B (zh) * | 2018-03-01 | 2021-01-22 | 聚好看科技股份有限公司 | 一种定时消息处理方法及消息管理服务器 |
CN111324302A (zh) * | 2018-12-13 | 2020-06-23 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN111324302B (zh) * | 2018-12-13 | 2023-09-01 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN110532114A (zh) * | 2019-09-04 | 2019-12-03 | 浪潮云信息技术有限公司 | 基于消息队列的定时任务管理系统及分配方法 |
CN111078383A (zh) * | 2019-12-24 | 2020-04-28 | 浙江诺诺网络科技有限公司 | 一种定时任务的管理方法、装置、设备及存储介质 |
CN112286944A (zh) * | 2020-12-28 | 2021-01-29 | 中国航空油料集团有限公司 | 工业故障诊断系统的运行方法 |
CN114138433A (zh) * | 2021-11-18 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种任务定时策略的方法、装置及介质 |
CN114138433B (zh) * | 2021-11-18 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 一种任务定时策略的方法、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391188A (zh) | 一种控制定时任务的方法和装置 | |
CN110309218B (zh) | 一种数据交换系统和数据写入方法 | |
CN107003893B (zh) | 虚拟机备份方法、备份装置及宿主机 | |
US8065659B1 (en) | Method and apparatus for executing scripts within a web browser | |
EP2656210B1 (en) | Providing a persona-based application experience | |
US20150310209A1 (en) | Executing third-party application | |
CN107656705B (zh) | 一种计算机存储介质和一种数据迁移方法、装置及系统 | |
CN104899049B (zh) | 一种文件删除方法及其装置 | |
US11157355B2 (en) | Management of foreground and background processes in a storage controller | |
CN115168061B (zh) | 一种计算存储分离方法、系统、电子设备及存储介质 | |
CN106469101B (zh) | 计算机系统任务备份方法、系统状态恢复方法及其装置 | |
CN105867962A (zh) | 系统升级的方法和装置 | |
TWI640885B (zh) | Data uniqueness control method, information storage method and device | |
CN110046100B (zh) | 一种分组测试的方法、电子设备及介质 | |
CN103984621B (zh) | 日志分离方法和系统 | |
CN108874835A (zh) | 信息推送方法及装置 | |
US20090069919A1 (en) | Intelligent mass production planning and routing system | |
CN113660359A (zh) | 域名解析记录的管理方法及装置、存储介质及电子设备 | |
US10693731B2 (en) | Flow entry management method and device | |
US8850418B2 (en) | System and method for business function reversibility | |
CN106155594A (zh) | 一种数据处理方法及装置 | |
JP5035129B2 (ja) | アクセス制御プログラム | |
JP2007164532A (ja) | タスク表示装置、タスク表示方法及びタスク表示プログラム | |
JP5840892B2 (ja) | ソフトウェア配信システムおよびソフトウェア配信用プログラム | |
US7743244B2 (en) | Computer system model generation with tracking of actual computer system configuration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171124 |
|
RJ01 | Rejection of invention patent application after publication |