掌桥专利:专业的专利平台
掌桥专利
首页

一种任务触发方法、装置、设备及计算机可读存储介质

文献发布时间:2023-06-19 10:05:17


一种任务触发方法、装置、设备及计算机可读存储介质

技术领域

本申请涉及自动化控制技术领域,涉及但不限于一种任务触发方法、装置、设备及计算机可读存储介质。

背景技术

在日常需求中,我们经常需要提前创建一些在将来某个时间点执行指定操作的特殊任务。为使这些特殊任务能够实现完全自动执行,设计人员设置特殊任务触发时间,系统实时监控系统时间,当达到触发时间时,无需人为控制即可自动触发特殊任务开始执行相应的操作。

在相关技术中,系统确定是否达到特殊任务触发时间,主要有如下几种实现方式:使用线程扫描特殊任务触发时间、使用定时任务扫描特殊任务触发时间和采用定时器对特殊任务的触发时间定时。相关技术中特殊任务的触发方法,或者需要额外维护一个线程,消耗机器资源,特殊任务触发时间与实际的执行时间之间存在时间差,或者一个特殊任务独占一个定时器,待执行的特殊任务数受定时器数量限制,存在定时器无法重用的缺陷。

发明内容

有鉴于此,本申请实施例提供一种任务触发方法、装置、设备及计算机可读存储介质。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种任务触发方法,所述方法包括:

基于获取到的最大并发执行任务数配置多个定时任务,所述定时任务能够在不同时间关联不同任务;

响应于创建任务的第一指令,创建第一任务,所述第一指令中携带有所述第一任务的执行时间;

基于所述第一任务,在所述多个定时任务中确定一个目标定时任务,所述目标定时任务在所述执行时间未关联任务;

将所述第一任务与所述目标定时任务进行关联,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。

在一些实施例中,所述响应于创建任务的第一指令,创建第一任务,包括:

接收用于创建任务的第一指令;

对所述第一指令进行解析,得到第一执行时间和第一时长;

基于所述第一执行时间和所述第一时长创建第一任务,所述第一执行时间为所述第一任务的执行时间,所述第一时长为所述第一任务的执行时长。

在一些实施例中,所述基于所述第一任务,在所述多个定时任务中确定一个目标定时任务,包括:

根据所述第一执行时间和所述第一时长,确定所述第一任务的时间片段值;

基于所述时间片段值和所述多个定时任务的标识信息,确定至少一个候选定时任务;

获取所述至少一个候选定时任务对应的各个时间片段的占用信息;

基于所述占用信息从所述至少一个候选定时任务中确定目标定时任务。

在一些实施例中,所述占用信息包括空闲状态和占用状态;

所述基于所述占用信息从所述候选定时任务中确定目标定时任务,包括:

从所述至少一个候选定时任务中查找出一个空闲候选定时任务,所述空闲候选定时任务在所述第一执行时间对应的时间片段的占用信息为空闲状态;

确定所述空闲候选定时任务为所述目标定时任务。

在一些实施例中,所述方法还包括:

若从所述至少一个候选定时任务中未查找出空闲候选定时任务,确定不存在目标定时任务;

按照设定规则更新所述第一执行时间,以修改所述第一任务的执行时间;和/或,

发送提示信息,所述提示信息用于提示更新所述第一任务的执行时间,和/或所述提示信息用于提示更新最大并发执行任务数。

在一些实施例中,所述方法还包括:

在系统时间到达所述目标定时任务的触发时间时,触发所述目标定时任务,并更新所述目标定时任务的触发时间。

在一些实施例中,所述更新所述目标定时任务的触发时间,包括:

获取与所述目标定时任务关联的所有未执行任务;

获取所述所有未执行任务的执行时间;

将所述所有未执行任务的执行时间中最早的执行时间确定为所述目标定时任务的触发时间。

在一些实施例中,所述基于获取到的最大并发执行任务数配置多个定时任务,包括:

获取最大并发执行任务数;

基于所述最大并发执行任务数和预设的配置规则,确定配置任务数;

基于所述配置任务数,配置多个定时任务。

本申请实施例提供一种任务触发装置,所述装置包括:

配置模块,用于基于获取到的最大并发执行任务数配置多个定时任务,所述定时任务能够在不同时间关联不同任务;

创建模型,用于响应于创建任务的第一指令,创建第一任务,所述第一指令中携带有所述第一任务的执行时间;

确定模块,用于基于所述第一任务,在所述多个定时任务中确定一个目标定时任务,所述目标定时任务在所述执行时间未关联任务;

关联模块,用于将所述第一任务与所述目标定时任务进行关联,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。

本申请实施例提供一种任务触发设备,包括:

处理器;以及

存储器,用于存储可在所述处理器上运行的计算机程序;

其中,所述计算机程序被处理器执行时实现上述任务触发方法的步骤。

本申请实施例提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令配置为执行上述任务触发方法的步骤。

本申请实施例提供一种任务触发方法、装置、设备及计算机可读存储介质,其中,所述方法包括:基于获取到的最大并发执行任务数配置多个定时任务,所述定时任务能够在不同时间关联不同任务;响应于创建任务的第一指令,创建第一任务,所述第一指令中携带有所述第一任务的执行时间;基于所述第一任务,在所述多个定时任务中确定一个目标定时任务,所述目标定时任务在所述执行时间未关联任务;将所述第一任务与所述目标定时任务进行关联,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。如此,既能保证第一任务在配置的执行时间点准时执行,同时可以使用较少的定时任务数量支撑配置大量的待执行任务,能够提升定时任务的重复利用率,并且,只有当第一任务的执行时间到达时,才会触发定时任务以执行第一任务,实现节约系统资源。

附图说明

在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。

图1为本申请实施例提供的任务触发方法的一种实现流程示意图;

图2为本申请实施例提供的任务触发方法的另一种实现流程示意图;

图3为本申请实施例提供的任务触发方法的又一种实现流程示意图;

图4为本申请实施例提供的任务触发方法中为特殊任务分配定时任务的实现流程示意图;

图5为本申请实施例提供的任务触发方法中定时任务触发执行的流程示意图;

图6为本申请实施例提供的任务触发装置的组成结构示意图;

图7为本申请实施例提供的任务触发设备的组成结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

为了更好地理解本申请实施例,首先对相关技术中的任务触发方法及存在的缺点进行说明。

在相关技术中,系统确定是否达到特殊任务触发时间,主要有如下几种实现方式:

1)使用线程扫描特殊任务触发时间:应用程序运行期间,永久执行一个线程,不断轮询特殊任务的触发时间,当达到触发时间时执行相应的操作。该种方式中,应用程序需要额外维护一个线程,消耗机器资源;而且特殊任务配置的触发时间早于轮询的当前时间时,特殊任务才能被触发,导致特殊任务触发时间与实际的执行时间之间存在时间差。

2)使用定时任务扫描特殊任务触发时间:配置一个定时任务,以特定频率轮询特殊任务的触发时间,当达到触发时间时执行相应的操作。该种方式中,特殊任务触发时间早于定时任务时才能被执行,仍然存在特殊任务触发时间与实际的执行时间之间存在时间差的问题。

3)使用定时器:创建特殊任务时,为特殊任务分配一个定时器,定时器的触发时间设置为特殊任务触发时间,定时器达到触发时间时,执行特殊任务对应的操作。该种方式当特殊任务触发时间到达时立刻执行,不存在时间差和资源浪费,但一个特殊任务独占一个定时器,待执行的特殊任务数受定时器数量限制,导致定时器无法重用。

基于以上问题,本申请实施例提供一种任务触发方法,所述方法应用于任务触发设备。本申请实施例提供的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本申请实施例提供的任务触发方法中各个步骤。在一些实施例中,该计算机程序可以任务触发设备中的处理器执行。图1为本申请实施例提供的任务触发方法的一种实现流程示意图,如图1所示,所述任务触发方法包括以下步骤:

步骤S101,基于获取到的最大并发执行任务数配置多个定时任务。

这里,所述定时任务能够在不同时间关联不同任务。

当用户需要提前创建一些在未来某个时间点执行指定操作的特殊任务时,为了使此类特殊任务能够实现完全自动地执行,本申请实施例中,为此类特殊任务配置多个定时任务,将定时任务触发时间设置为特殊任务的执行时间。当到达定时任务的触发时间时,定时任务被触发,此时,开始执行特殊任务对应的指定操作,能够确保特殊任务执行时间到达时准时执行,不存在时间差,并且,无需额外维护线程,节约系统资源。

本申请实施例中,为了实现定时任务的重复利用,将定时任务在不同时间与不同的特殊任务进行关联。例如,在12点时与执行时间为12点的一个特殊任务关联,在14点时与执行时间为14点的另一特殊任务关联,在15点时与执行时间为15点的又一特殊任务关联,使得多个不同执行时间的特殊任务与同一个定时任务在不同时间关联,从而使得定时任务得到有效的重用,能够提高定时任务的重复使用率。

配置的定时任务数量过多时造成浪费,增加系统监控开销,但配置的定时任务数量过少时,存在不能支持多个特殊任务并发执行的情况。基于此,本申请实施例中,基于应用程序的历史数据,预先对最大并发执行任务数进行估计,即获取同一时间段最多可能同时执行的任务数量,得到最大并发执行任务数,然后基于得到的最大并发执行任务数,确定配置的定时任务的数量。

步骤S102,响应于创建任务的第一指令,创建第一任务。

这里,所述第一指令中携带有所述第一任务的执行时间。

当用户需要创建新的在未来某个时间点执行指定操作的特殊任务(即第一任务)时,基于接收到的创建任务的第一指令中携带的信息,创建第一任务。

例如,当前时间是2020年8月28日,用户想在2020年9月1日12点整,给指定的特殊用户发放优惠券,则创建的第一任务的执行时间为2020年9月1日12时0分0秒(即“未来某个时间点”),执行的指定操作为发放优惠券(即“指定操作”),当系统时间到达第一任务的执行时间时,自动触发第一任务执行指定操作。

步骤S103,基于所述第一任务,在所述多个定时任务中确定一个目标定时任务。

这里,所述目标定时任务在所述执行时间未关联任务。由于一个定时任务在触发时间被触发时,若该触发时间同时关联了多个任务,无法确保该多个任务同时被执行,必然存在部分任务的实际执行时间晚于设定执行时间,导致该部分任务不能准时执行,为了解决该问题,本申请实施例中,一个定时任务在同一个时间片段,只关联一个特殊任务,即在多个定时任务中确定的目标定时任务,在第一任务的执行时间未关联其他任务。

步骤S104,将所述第一任务与所述目标定时任务进行关联。

建立第一任务和目标定时任务之间的关联关系,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。

仍以上述举例说明,在步骤S101中初始化配置了多个定时任务,在步骤S102中创建第一任务后,需要在多个定时任务中确定一个目标定时任务,该目标定时任务在2020年9月1日12时0分0秒未与其他任务相关联。确定了目标定时任务后,将该目标定时任务与第一任务进行关联,具体是在第一任务的执行时间(即2020年9月1日12时0分0秒)进行关联,当系统时间到达第一任务的执行时间时,目标定时任务被触发,开始执行第一任务。

本申请实施例提供的任务触发方法,基于获取到的最大并发执行任务数配置多个定时任务,所述定时任务能够在不同时间关联不同任务;响应于创建任务的第一指令,创建第一任务,所述第一指令中携带有所述第一任务的执行时间;基于所述第一任务,在所述多个定时任务中确定一个目标定时任务,所述目标定时任务在所述执行时间未关联任务;将所述第一任务与所述目标定时任务进行关联,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。如此,既能保证第一任务在配置的执行时间点准时执行,同时可以使用较少的定时任务数量支撑配置大量的待执行任务,能够提升定时任务的重复利用率,并且,只有当第一任务的执行时间到达时,才会触发定时任务以执行第一任务,实现节约系统资源。

在一些实施例中,图1所示实施例中的步骤S101“基于获取到的最大并发执行任务数配置多个定时任务”可以通过以下步骤实现:

步骤S1011,获取最大并发执行任务数。

本申请实施例中,用户可以根据历史数据、或预估同一时间片段上可能并发执行任务数,将预估结果发送至任务触发设备,任务触发设备获得最大并发执行任务数。

步骤S1012,基于所述最大并发执行任务数和预设的配置规则,确定配置任务数。

预设的配置规则可以由用户自行确定,也可以由任务触发设备设定。当配置定时任务过多时,存在超过最大并发执行任务数的部分定时任务始终不存在与其关联的任务,造成浪费;而配置的定时任务过少时,当实际并发执行任务数超过定时任务数,导致超过定时任务数的任务无法准时执行。

本申请实施例中,配置规则可设定为定时任务数为预期同一时间片段最大并发执行特殊任务数的2倍,能够防止前后两个时间片段上的任务触发时间相隔时间过短而存在冲突情况的发生。例如,获取到的最大并发执行任务数为3,则配置6个定时任务。

步骤S1013,基于所述配置任务数,配置多个定时任务。

本申请实施例提供的任务触发方法,基于获取到的最大并发执行任务数和预设的配置规则配置多个定时任务,在确保任务能够最大并发执行的同时,确保浪费较少系统资源,能够防止前后相邻时间片段上的任务触发时间相隔时间过短而存在冲突情况的发生。

在一些实施例中,图1所示实施例中的步骤S102“响应于创建任务的第一指令,创建第一任务”,可以通过以下步骤来实现:

步骤S1021,接收用于创建任务的第一指令。

用户需要在未来某个时间点执行第一任务时,向任务触发设备发送一用于创建第一任务的指令,该指令中携带有待创建的第一任务的信息,待创建的第一任务的信息至少包括该第一任务的执行时间、执行时长等信息。

步骤S1022,对所述第一指令进行解析,得到第一执行时间和第一时长。

任务触发设备接收到第一指令后,对其进行解析,得到第一执行时间和第一时长,第一执行时间和第一时长分别对应第一任务的执行时间和执行时长。

步骤S1023,基于所述第一执行时间和所述第一时长创建第一任务。

其中,所述第一执行时间为所述第一任务的执行时间,所述第一时长为所述第一任务的执行时长。任务触发设备基于获取到的第一执行时间和第一时长,创建第一任务。

在一些实施例中,图1所示实施例中的步骤S103“基于所述第一任务,在所述多个定时任务中确定一个目标定时任务”,可以通过以下步骤来实现:

步骤S1031,根据所述第一执行时间和所述第一时长,确定所述第一任务的时间片段值。

将第一任务的执行时间对应时间戳的毫秒值整除该第一任务的执行时长,获得该第一任务执行时间片段值。例如,第一任务为发放优惠券任务,给指定一批用户发放优惠券,执行时长为2分钟(120000毫秒),设定在2020年3月8日0时0分0秒(时间戳为1583625600000)执行发券操作,此发放优惠券任务执行时间片段值等于1583625600000与120000相除得到的商取整,得到13196880。

步骤S1032,基于所述时间片段值和所述多个定时任务的标识信息,确定至少一个候选定时任务。

在配置多个定时任务时,同时对配置的多个定时任务进行编号,将定时任务的编号确定为定时任务的标识信息。

对步骤S101配置的多个定时任务进行编号,在实际实现时,可按照序数进行连续编号,得到多个编号的定时任务,以对多个定时任务进行区分。例如,对6个定时任务进行编号,得到的编号定时任务为1号定时任务、2号定时任务、……、6号定时任务。

在实际实现时,可以根据时间片段值的奇偶性确定是否作为候选定时任务,当时间片段值为奇数,则筛选奇数编号的定时任务作为候选定时任务;当时间片段值为偶数,则筛选偶数编号的定时任务作为候选定时任务。

如时间片段值13196880为偶数,在多个编号定时任务中筛选编号为偶数的定时任务作为候选定时任务。如,6个定时任务的编号为1至6,则筛选出的候选定时任务为编号为2、4、6的这3个候选定时任务。

步骤S1033,获取所述至少一个候选定时任务对应的各个时间片段的占用信息。

其中,所述占用信息包括空闲状态和占用状态。若当前定时任务的在2020年3月8日0时0分0秒已经关联了其他任务,则该当前定时任务在该时间对应的时间片段的占用信息为占用状态;若当前定时任务的在2020年3月8日0时0分0秒未关联其他任务,则该当前定时任务在该时间对应的时间片段的占用信息为空闲状态。

步骤S1034,基于所述占用信息从所述至少一个候选定时任务中确定目标定时任务。

一个定时任务在同一时间片段只能关联一个待执行的第一任务,基于此,在至少一个候选定时任务中,选择在第一任务执行时间对应的时间片段的占用信息为空闲的候选定时任务作为目标定时任务,从而实现在该执行时间,定时任务被触发时,执行该第一任务,保证第一任务在配置的执行时间点能够准时执行。

在一些实施例中,上述步骤S1034可以通过以下步骤实现。

步骤S0341,从所述至少一个候选定时任务中查找出一个空闲候选定时任务。

其中,所述空闲候选定时任务在所述第一执行时间对应的时间片段的占用信息为空闲状态。

步骤S0342,确定所述空闲候选定时任务为所述目标定时任务。

例如,4号候选定时任务在2020年3月8日0时0分0秒未关联其他任务,则将4号候选定时任务确定为目标定时任务。

在一些实施例中,若从所述至少一个候选定时任务中未查找出空闲候选定时任务,此时,确定不存在目标定时任务,可以执行步骤:按照设定规则更新所述第一执行时间,以修改所述第一任务的执行时间。

若在所有的候选定时任务中,不存在第一任务的执行时间对应的时间片段的占用信息为空闲状态的目标定时任务,表明当前所有候选定时任务在第一任务的执行时间对应的时间片段都已经关联了任务,已经达到最大并发任务数,此时,任务触发设备可以按照设定规则,自动地更新第一执行时间,以修改第一任务的执行时间,例如将2020年3月8日0时0分0秒更新为2020年3月8日1时0分0秒。

在另一些实施例中,可以将不存在目标定时任务的信息提示给用户,由用户重新设定第一任务的执行时间,此时,可以执行步骤:发送提示信息,其中,所述提示信息用于提示更新所述第一任务的执行时间。

在又一些实施例中,可以将不存在目标定时任务的信息提示给用户,由用户修改最大并发执行任务数,例如,预估的最大并发执行任务数为3个,用户预估值低于实际并发值,此时,可将最大并发执行任务数修改为5个,在2020年3月8日0时0分0秒配置的定时任务数由原来的6个增加为10个,第一任务能够与第4个候选定时任务(即8号候选定时任务)进行关联,即确定8号候选定时任务为目标定时任务。此时,所述提示信息用于提示修改最大并发执行任务数。

在又一些实施例中,所述提示信息用于提示修改所述第一任务的执行时间,并提示修改最大并发执行任务数,由用户自主选择修改其中一个。

在另一些实施例中,任务触发设备按照设定规则更新所述第一执行时间,后,发送用于所述第一执行时间已被修改的提示信息,例如,由任务触发设备将用户设定的在2020年3月8日0时0分0秒执行发放优惠券的任务修改在2020年3月8日1时0分0秒执行。

在图1所示实施例的基础上,本申请实施例再提供一种任务触发方法,图2为本申请实施例提供的任务触发方法的另一种实现流程示意图,如图2所示,所述方法包括以下步骤:

步骤S201,基于获取到的最大并发执行任务数配置多个定时任务。

这里,所述定时任务能够在不同时间关联不同任务。

步骤S202,响应于创建任务的第一指令,创建第一任务。

这里,所述第一指令中携带有所述第一任务的执行时间。

步骤S203,基于所述第一任务,在所述多个定时任务中确定一个目标定时任务。

这里,所述目标定时任务在所述执行时间未关联任务。

步骤S204,将所述第一任务与所述目标定时任务进行关联。

建立第一任务和目标定时任务之间的关联关系,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。

上述步骤S201至步骤S204的实现方式与效果参见图1所示实施例中步骤S101至步骤S104的描述。

步骤S205,在系统时间到达所述目标定时任务的触发时间时,触发所述目标定时任务。

将第一任务与目标定时任务进行关联后,在系统时间达到目标定时的触发时间时,触发目标定时任务,目标定时任务系统时间对应的时间片段关联的特殊任务被执行。若该触发时间为第一任务的执行时间,则执行第一任务。

例如,目标定时任务在2020年3月7日0时0分0秒关联第二任务,在2020年3月7日0时0分0秒关联第一任务,当系统时间到达2020年3月7日0时0分0秒时,目标定时任务被触发,此时执行第二任务;当系统时间到达2020年3月7日0时0分0秒时,目标定时任务再次被触发,此时执行第一任务。

步骤S206,更新所述目标定时任务的触发时间。

目标定时任务被触发后,根据目标定时任务关联的未执行任务,对目标定时任务的触发时间进行更新。例如,目标定时任务在2020年3月9日0时0分0秒关联第三任务,在系统时间到达2020年3月7日0时0分0秒时,目标定时任务再次被触发,更新目标定时任务的触发时间为下一个待执行任务(如第三任务)的执行时间2020年3月9日0时0分0秒。

在一些实施例中,图2所示实施例中的步骤S206“更新所述目标定时任务的触发时间”,可以通过以下步骤实现:

步骤S2061,获取与所述目标定时任务关联的所有未执行任务。

步骤S2062,获取所述所有未执行任务的执行时间。

步骤S2063,将所述所有未执行任务的执行时间中最早的执行时间确定为所述目标定时任务的触发时间。

本申请实施例中,目标定时任务当前被触发后,需要将目标定时任务的触发时间更新为下一个待执行的任务的执行时间。首先获取与目标定时任务关联的所有未执行任务,并获取这些未执行任务的执行时间,将最早的待执行任务的执行时间更新为目标定时任务的触发时间。

例如,目标定时任务执行第一任务后,所有未执行任务包括:第三任务(执行时间为2020年3月9日0时0分0秒)、第四任务(2020年3月10日0时0分0秒)、第五任务(2020年3月9日0时05分0秒),由于第三任务的执行时间最早,则将第三任务的执行时间2020年3月9日0时0分0秒更新为目标定时任务的触发时间,目标定时任务将在2020年3月9日0时0分0秒再次被触发。

图3为本申请实施例提供的任务触发方法的又一种实现流程示意图,如图3所示,本申请实施例提供的任务触发方法包括以下步骤:

步骤S301,获取最大并发执行任务数。

该最大并发执行任务数,可以基于用户的输入指令获取。在一些实施例中,也可以由任务触发设备结合历史数据设定。

步骤S302,基于所述最大并发执行任务数和预设的配置规则,确定配置任务数。

步骤S303,基于所述配置任务数,配置多个定时任务。

这里,所述定时任务能够在不同时间关联不同任务。

步骤S304,接收用于创建任务的第一指令。

这里,所述第一指令中携带有所述第一任务的执行时间。

步骤S305,对所述第一指令进行解析,得到第一执行时间和第一时长。

步骤S306,基于所述第一执行时间和所述第一时长创建第一任务。

其中,所述第一执行时间为所述第一任务的执行时间,所述第一时长为所述第一任务的执行时长。

步骤S307,根据所述第一执行时间和所述第一时长,确定所述第一任务的时间片段值。

步骤S308,基于所述时间片段值和所述多个定时任务的标识信息,确定至少一个候选定时任务。

步骤S309,获取所述至少一个候选定时任务对应的各个时间片段的占用信息。

所述占用信息包括空闲状态和占用状态。

步骤S310,从所述至少一个候选定时任务中查找出一个空闲候选定时任务。

其中,所述空闲候选定时任务在所述第一执行时间对应的时间片段的占用信息为空闲状态。

步骤S311,确定所述空闲候选定时任务为所述目标定时任务。

所述空闲定时任务为在第一执行时间对应的时间片段的占用信息为空闲状态的候选定时任务,所述目标定时任务在所述第一执行时间未关联任务。

步骤S312,若从所述至少一个候选定时任务中未查找出空闲候选定时任务,确定不存在目标定时任务。

步骤S313,按照设定规则更新所述第一执行时间,以修改所述第一任务的执行时间。

步骤S314,发送提示信息。

其中,所述提示信息用于提示更新所述第一任务的执行时间,和/或所述提示信息用于提示更新最大并发执行任务数。

步骤S315,在系统时间到达所述目标定时任务的触发时间时,触发所述目标定时任务。

步骤S316,获取与所述目标定时任务关联的所有未执行任务。

步骤S317,获取所述所有未执行任务的执行时间。

步骤S318,将所述所有未执行任务的执行时间中最早的执行时间确定为所述目标定时任务的触发时间。

本申请实施例提供的任务触发方法,既能保证第一任务在配置的执行时间点准时执行,同时可以使用较少的定时任务数量支撑配置大量的待执行任务,能够提升定时任务的重复利用率,并且,只有当第一任务的执行时间到达时,才会触发定时任务以执行第一任务,实现节约系统资源。

下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。

在日常需求中,我们经常需要提前创建一些在将来某个时间点执行指定操作的特殊任务(对应上述实施例中的第一任务)。为了使此类特殊任务能够实现完全自动,相关人员设置好特殊任务后只需等到了触发时间,特殊任务自动执行,无需人为控制,需要系统实时监控特殊任务的触发时间。

相关技术的实现方法,主要存在如下问题:

1)使用线程扫描特殊任务触发时间:程序运行期间,永久执行一个线程,不断轮询特殊任务的触发时间,当到达触发时间,执行相应的操作。该种方法主要存在两个问题:问题1、应用程序需要额外维护一个线程,消耗机器资源;问题2、特殊任务配置的触发时间早于轮询时当前时间,特殊任务才能被触发,特殊任务配置的执行时间与实际的执行时间之间存在时间差。

2)使用定时任务扫描特殊活动执行时间:配置一个定时任务,以特定频率轮询特殊任务的执行时间,当到达执行时间,执行相应的操作。由于该种方法特殊任务执行时间早于定时任务的触发时间时才能被执行,因此也会存在特殊任务配置的执行时间与实际的执行时间之间存在时间差的问题。

3)特殊任务与定时任务关联:创建特殊任务时,为特殊任务分配一个定时任务,定时任务触发时间设置为特殊任务的执行时间,到达定时任务的触发时间时执行特殊任务相应的操作。该种方法,当特殊任务执行时间到达时立刻执行,不存在时间差和资源浪费,但每个待执行的特殊任务独占一个定时任务,待执行特殊任务数受定时任务数量限制,定时任务不能得到更有效的重用。

本申请实施例基于上述问题,将时间按特殊任务的最大执行时长划分成时间片段,位于不同时间片段的特殊任务共用同一个定时任务。

在创建特殊任务之前,首先初始化定时任务,用户根据历史数据、或预估同一时间片段上并发执行特殊任务数,初始化配置一定数量的定时任务并分配连续序号。本申请实施例中,为防止前后两个时间片段上的特殊任务执行时间相差太小,定时任务数为预期同一时间片段最大并发执行特殊任务数的2倍。当特殊任务数为3,表1为初始化的定时任务。

表1初始化的定时任务

图4为本申请实施例提供的任务触发方法中为特殊任务分配定时任务的实现流程示意图,如图4所示,所述方法包括以下步骤:

步骤S401,创建特殊任务。

步骤S402,根据特殊任务执行时间计算特殊任务执行时间片段值。

将特殊任务执行时间对应时间戳的毫秒值整除特殊任务的最大运行时长,获得特殊任务执行时间片段值。例如,特殊任务为发放优惠券任务,给指定一批用户发放优惠券,最长执行时长为2分钟(120000毫秒),2020年3月8日0时0分0秒(时间戳为1583625600000)执行发券操作,此特殊任务执行时间片段值等于1583625600000与120000相除得到的商取整,得到13196880。

步骤S403,判断所述时间片段值是否为奇数。

若时间片段值为奇数,进入步骤S404,若时间片段值为偶数,进入步骤S405。

步骤S404,查询奇数序列的所有定时任务。

步骤S405,查询偶数序列的所有定时任务。

步骤S406,判断是否存在目标定时任务。

其中,所述目标定时任务相应时间片段为空闲状态。若查找到存在时间片段为空闲状态的目标定时任务,进入步骤S407,若未查找到存在时间片段为空闲状态的目标定时任务,即所有定时任务相应时间片段均为占用状态,此时进入步骤S410。

步骤S407,将特殊任务与目标定时任务的相应时间片段关联。

步骤S408,判断特殊任务是否是目标定时任务关联的所有任务中最早执行的特殊任务。

若该特殊任务是目标定时任务关联的所有任务中最早执行的特殊任务,表明目标定时任务的触发时间即为该特殊任务的执行时间,进入步骤S409;若该特殊任务不是目标定时任务关联的所有任务中最早执行的特殊任务,表明还未到该特殊任务的执行时间,此时定时任务触发时间不变,进入步骤S411,完成创建当前特殊任务。

步骤S409,将定时任务的触发时间修改为特殊任务的执行时间。

步骤S410,发送修改特殊任务执行时间或增加定时任务的提示信息。

若所有相应时间片段无空闲的定时任务,提醒运营修改活动触发时间或增加定时任务,然后结束创建当前特殊任务。

步骤S411,创建当前特殊任务结束。

图5为本申请实施例提供的任务触发方法中定时任务触发执行的流程示意图,如图5所示,定时任务触发过程包括以下步骤:

步骤S501,定时任务触发。

步骤S502,触发执行当前时间片段上关联的特殊任务。

步骤S503,判断是否存在未执行的特殊任务。

当存在未执行的特殊任务,修改定时任务的触发时间,进入步骤S504;当不存在未执行的特殊任务,表明当前定时任务关联的所有任务均已执行,此时进入步骤S506。

步骤S504,获取与当前定时任务关联的所有未执行特殊任务中执行时间最早的特殊任务。

步骤S505,修改定时任务触发时间为执行时间最早的特殊任务的执行时间。

步骤S506,定时任务结束当前时间片段触发。

本申请实施例提供的任务触发方法,既能保证特殊任务在配置的执行时间点准时执行,同时可以使用较少的定时任务数量支撑配置大量的待执行特殊任务,提升定时任务重复利用率。并且,当特殊任务的触发时间到达时,才会触发定时任务执行,节约系统资源。

基于前述的实施例,本申请实施例提供一种任务触发装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital SignalProcessing)或现场可编程门阵列(FPG A,Field Programmable Gate Array)等。

本申请实施例再提供一种任务触发装置,图6为本申请实施例提供的任务触发装置的组成结构示意图,如图6所示,所述任务触发装置600包括:

配置模块601,用于基于获取到的最大并发执行任务数配置多个定时任务,所述定时任务能够在不同时间关联不同任务;

创建模块602,用于响应于创建任务的第一指令,创建第一任务,所述第一指令中携带有所述第一任务的执行时间;

确定模块603,用于基于所述第一任务,在所述多个定时任务中确定一个目标定时任务,所述目标定时任务在所述执行时间未关联任务;

关联模块604,用于将所述第一任务与所述目标定时任务进行关联,以在触发所述目标定时任务且触发时间为所述执行时间时,执行所述第一任务。

在一些实施例中,所述创建模块602,进一步包括:

接收子模块,用于接收用于创建任务的第一指令;

解析子模块,用于对所述第一指令进行解析,得到第一执行时间和第一时长;

创建子模块,用于基于所述第一执行时间和所述第一时长创建第一任务,所述第一执行时间为所述第一任务的执行时间,所述第一时长为所述第一任务的执行时长。

在一些实施例中,所述确定模块603,进一步包括:

第一确定子模块,用于根据所述第一执行时间和所述第一时长,确定所述第一任务的时间片段值;

第二确定子模块,用于基于所述时间片段值和所述多个定时任务的标识信息,确定至少一个候选定时任务;

获取子模块,用于获取所述至少一个候选定时任务对应的各个时间片段的占用信息;

第三确定子模块,用于基于所述占用信息从所述至少一个候选定时任务中确定目标定时任务。。

在一些实施例中,所述第三确定子模块,进一步包括:

查找单元,用于从所述至少一个候选定时任务中查找出一个空闲候选定时任务,所述空闲候选定时任务在所述第一执行时间对应的时间片段的占用信息为空闲状态;

第一确定单元,用于确定所述空闲候选定时任务为所述目标定时任务。

在一些实施例中,所述第三确定子模块,进一步包括:

第二确定单元,用于若从所述至少一个候选定时任务中未查找出空闲候选定时任务,确定不存在目标定时任务;

更新单元,用于按照设定规则更新所述第一执行时间,以修改所述第一任务的执行时间;和/或,

发送单元,用于发送提示信息,所述提示信息用于提示更新所述第一任务的执行时间,和/或所述提示信息用于提示更新最大并发执行任务数。

在一些实施例中,所述任务触发装置800还可以包括:

触发模块,用于在系统时间到达所述目标定时任务的触发时间时,触发所述目标定时任务;

更新模块,用于更新所述目标定时任务的触发时间。

在一些实施例中,所述更新模块,还用于:

获取与所述目标定时任务关联的所有未执行任务;

获取所述所有未执行任务的执行时间;

将所述所有未执行任务的执行时间中最早的执行时间确定为所述目标定时任务的触发时间。

在一些实施例中,所述配置模块601,进一步包括:

获取子模块,用于获取最大并发执行任务数;

第三确定子模块,用于基于所述最大并发执行任务数和预设的配置规则,确定配置任务数;

配置子模块,用于基于所述配置任务数,配置多个定时任务。

这里需要指出的是:以上任务触发装置实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本申请任务触发装置实施例中未披露的技术细节,本领域的技术人员请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的任务触发方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,ReadOnly Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

相应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中提供的任务触发方法中的步骤。

本申请实施例提供一种任务触发设备,图7为本申请实施例提供的任务触发设备的组成结构示意图,根据图7示出的任务触发设备700的示例性结构,可以预见任务触发设备700的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用的特殊需求。

图7所示的任务触发设备700包括:一个处理器701、至少一个通信总线702、用户接口703、至少一个外部通信接口704和存储器705。其中,通信总线702配置为实现这些组件之间的连接通信。其中,用户接口703可以包括显示屏,外部通信接口704可以包括标准的有线接口和无线接口。其中,所述处理器701配置为执行存储器中存储的任务触发方法的程序,以实现上述实施例提供的任务触发方法中的步骤。

以上任务触发设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请任务触发设备和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台AC执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 一种任务触发方法、装置、设备及计算机可读存储介质
  • 一种批处理任务的触发方法、系统及计算机可读存储介质
技术分类

06120112410326