CN113590300A - 定时任务的执行方法、装置、存储介质及设备 - Google Patents
定时任务的执行方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN113590300A CN113590300A CN202111147383.1A CN202111147383A CN113590300A CN 113590300 A CN113590300 A CN 113590300A CN 202111147383 A CN202111147383 A CN 202111147383A CN 113590300 A CN113590300 A CN 113590300A
- Authority
- CN
- China
- Prior art keywords
- period
- task
- timing
- task list
- value
- 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.)
- Granted
Links
Images
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/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
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Abstract
本申请公开了一种定时任务的执行方法、装置、存储介质及设备,属于计算机技术领域。所述方法包括:按照扫描周期扫描各个项目的配置文件中的定时任务信息,所述定时任务信息用于指示定时任务的执行周期和执行方式;根据所述执行周期生成当前周期任务列表和下一周期任务列表,所述当前周期任务列表中包含当前周期要执行的定时任务,所述下一周期任务列表中包含下一周期要执行的定时任务;根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序;利用所述子程序执行所述当前周期任务列表中的各个定时任务。本申请既可以节省人力资源,也可以提高定时任务的执行效率。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种定时任务的执行方法、装置、存储介质及设备。
背景技术
定时任务是指具有固定的执行时间或者具有固定的执行周期的任务。当项目的配置文件中包含有定时任务时,管理员需要根据该配置文件,将该项目中的每个定时任务信息写入服务器中的任务列表中,后续,服务器可以扫描任务列表来执行各个定时任务。
由于管理员需要将每个项目的每个定时任务信息写到服务器的任务列表中,需要消耗时间,使得服务器无法及时执行定时任务,从而影响定时任务的执行效率。
发明内容
本申请实施例提供了一种定时任务的执行方法、装置、存储介质及设备,用于解决人为地将定时任务写到服务器的任务列表中,会影响定时任务的执行效率的问题。所述技术方案如下:
一方面,提供了一种定时任务的执行方法,所述方法包括:
按照扫描周期扫描各个项目的配置文件中的定时任务信息,所述定时任务信息用于指示定时任务的执行周期和执行方式;
根据所述执行周期生成当前周期任务列表和下一周期任务列表,所述当前周期任务列表中包含当前周期要执行的定时任务,所述下一周期任务列表中包含下一周期要执行的定时任务;
根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序;
利用所述子程序执行所述当前周期任务列表中的各个定时任务。
在一种可能的实现方式中,所述根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序,包括:
当首次扫描时,获取所述当前周期任务列表中所包含的定时任务的数量和所述下一周期任务列表中所包含的定时任务的数量中的最大值;
将所述最大值加上预设的冗余值,得到所述预定数量,所述冗余值表示冗余的子程序的数量;
按照所述预定数量创建所述子程序。
在一种可能的实现方式中,所述根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序,包括:
当非首次扫描时,获取所述当前周期任务列表中所包含的定时任务的数量和所述下一周期任务列表中所包含的定时任务的数量中的最大值;
统计当前时刻处于空闲状态的子程序的数量,得到空闲值;
将所述最大值加上预设的冗余值后减去所述空闲值,得到所述预定数量,所述冗余值表示冗余的子程序的数量;
按照所述预定数量创建所述子程序。
在一种可能的实现方式中,所述方法还包括:
将所述最大值加上所述冗余值,将得到的第一计算结果与所述空闲值进行比较;
若所述第一计算结果大于所述空闲值,则触发执行所述将所述最大值加上预设的冗余值后减去所述空闲值的步骤;
若所述第一计算结果小于或等于所述空闲值,则不创建所述子程序。
在一种可能的实现方式中,所述利用所述子程序执行所述当前周期任务列表中的各个定时任务,包括:
对于所述当前周期任务列表中的每个定时任务,为所述定时任务随机选择一个子程序,将所述定时任务分配给选出的所述子程序执行。
在一种可能的实现方式中,所述方法还包括:
当所述子程序执行所述定时任务出错时,利用所述子程序发出报警信息。
在一种可能的实现方式中,在所述利用所述子程序执行所述当前周期任务列表中的各个定时任务之后,所述方法还包括:
利用所述子程序将所述定时任务的执行结果写入执行日志中。
在一种可能的实现方式中,在所述利用所述子程序将所述定时任务的执行结果写入执行日志中之后,所述方法还包括:
当所述执行结果包括所述定时任务的执行时长时,统计平均执行时长大于所述扫描周期的m个目标定时任务,m≥1;
再次按照所述扫描周期扫描各个项目的配置文件中的定时任务信息;
再次根据所述执行周期生成当前周期任务列表和下一周期任务列表;
若所述当前周期任务列表中包含n个所述目标定时任务,则根据所述当前周期任务列表中定时任务的数量、所述下一周期任务列表中定时任务的数量、空闲值、冗余值和所述n创建预定数量的子程序,所述空闲值表示处于空闲状态的子程序的数量,所述冗余值表示冗余的子程序的数量,1≤n≤m;
利用所述子程序执行所述当前周期任务列表中的各个定时任务。
在一种可能的实现方式中,所述根据所述当前周期任务列表中定时任务的数量、所述下一周期任务列表中定时任务的数量、空闲值、冗余值和所述n创建预定数量的子程序,包括:
将所述下一周期任务列表中定时任务的数量加上所述n,得到第二计算结果;
获取所述当前周期任务列表中所包含的定时任务的数量和所述第二计算结果中的最大值;
将所述最大值加上所述冗余值后减去所述空闲值,得到所述预定数量;
按照所述预定数量创建所述子程序。
在一种可能的实现方式中,所述方法还包括:
将所述最大值加上所述冗余值,将得到的第三计算结果与所述空闲值进行比较;
若所述第三计算结果大于所述空闲值,则触发执行所述将所述最大值加上所述冗余值后减去所述空闲值的步骤;
若所述第三计算结果小于或等于所述空闲值,则不创建所述子程序。
一方面,提供了一种定时任务的执行装置,所述装置包括:
扫描模块,用于按照扫描周期扫描各个项目的配置文件中的定时任务信息,所述定时任务信息用于指示定时任务的执行周期和执行方式;
生成模块,用于根据所述执行周期生成当前周期任务列表和下一周期任务列表,所述当前周期任务列表中包含当前周期要执行的定时任务,所述下一周期任务列表中包含下一周期要执行的定时任务;
创建模块,用于根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序;
执行模块,用于利用所述子程序执行所述当前周期任务列表中的各个定时任务。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的定时任务的执行方法。
一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的定时任务的执行方法。
本申请实施例提供的技术方案的有益效果至少包括:
通过扫描各个项目的配置文件中的定时任务信息,再根据定时任务信息中的执行周期生成当前周期任务列表和下一周期任务列表,再根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序,最后利用子程序执行当前周期任务列表中的各个定时任务,这样,就可以直接扫描配置文件来执行定时任务,而无需管理员将定时任务写到服务器的任务列表中,既可以节省人力资源,也可以提高定时任务的执行效率。
另外,可以根据当前周期任务列表和下一周期任务列表中定时任务的数量创建子程序,从而可以在当前周期创建下一周期需要的子程序,即,将当前周期和下一周期的两个创建流程合并为一个创建流程,避免多次创建子程序所带来的资源开销。
通过对执行日志进行分析,可以筛选出平均执行时长大于扫描周期的m个目标定时任务,即,每个目标定时任务在一个扫描周期内是无法执行完成的。若当前周期任务列表中包含n个目标定时任务,则在计算下一周期的定时任务的数量时,需要将该数量增加n,从而提高创建子程序的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的定时任务的执行方法的方法流程图;
图2是本申请另一实施例提供的定时任务的执行方法的方法流程图;
图3是本申请另一实施例提供的定时任务的执行方法的方法流程图;
图4是本申请再一实施例提供的定时任务的执行装置的结构框图;
图5是本申请再一实施例提供的定时任务的执行装置的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的定时任务的执行方法的方法流程图,该定时任务的执行方法可以应用于计算机设备中。该定时任务的执行方法,可以包括:
步骤101,按照扫描周期扫描各个项目的配置文件中的定时任务信息,定时任务信息用于指示定时任务的执行周期和执行方式。
扫描周期是预设的扫描每个项目的配置文件的周期。扫描周期可以是预先设置的,比如,将扫描周期设置为最小时间单位,或者,可以设置扫描周期小于或等于定时任务的最小执行周期,从而可以保证所有的定时任务都能够被扫描到。
项目的配置文件中可以包含至少一个定时任务的定时任务信息,该定时任务信息包括执行周期信息和执行方式信息。其中,执行周期信息表示定时任务的执行周期,比如,执行周期信息可以包括开始时间和周期。执行方式信息标识定时任务的执行方式,比如,发邮件。
步骤102,根据执行周期生成当前周期任务列表和下一周期任务列表,当前周期任务列表中包含当前周期要执行的定时任务,下一周期任务列表中包含下一周期要执行的定时任务。
比如,扫描周期是1个小时,且当前时间是8点,则当前周期任务列表中包含的是8点需要执行的定时任务,下一周期任务列表中包含的是9点需要执行的定时任务。
步骤103,根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序。
本实施例中的子程序用于执行定时任务,且每个子程序可以执行一个定时任务。
计算机设备可以获取当前周期任务列表中定时任务的数量,以及下一周期任务列表中定时任务的数量,并根据这两个数量计算预定数量,创建预定数量的子程序。
步骤104,利用子程序执行当前周期任务列表中的各个定时任务。
计算机设备可以将每个定时任务分配给一个子程序,利用子程序来执行定时任务。比如,将8点发邮件的定时任务分配给子程序A,将8点统计状态的定时任务分配给子程序B。
综上所述,本申请实施例提供的定时任务的执行方法,通过扫描各个项目的配置文件中的定时任务信息,再根据定时任务信息中的执行周期生成当前周期任务列表和下一周期任务列表,再根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序,最后利用子程序执行当前周期任务列表中的各个定时任务,这样,就可以直接扫描配置文件来执行定时任务,而无需管理员将定时任务写到服务器的任务列表中,既可以节省人力资源,也可以提高定时任务的执行效率。
另外,可以根据当前周期任务列表和下一周期任务列表中定时任务的数量创建子程序,从而可以在当前周期创建下一周期需要的子程序,即,将当前周期和下一周期的两个创建流程合并为一个创建流程,避免多次创建子程序所带来的资源开销。
请参考图2,其示出了本申请一个实施例提供的定时任务的执行方法的方法流程图,该定时任务的执行方法可以应用于计算机设备中。该定时任务的执行方法,可以包括:
步骤201,按照扫描周期扫描各个项目的配置文件中的定时任务信息,定时任务信息用于指示定时任务的执行周期和执行方式。
扫描周期是预设的扫描每个项目的配置文件的周期。扫描周期可以是预先设置的,比如,将扫描周期设置为最小时间单位,或者,可以设置扫描周期小于或等于定时任务的最小执行周期,从而可以保证所有的定时任务都能够被扫描到。
项目的配置文件中可以包含至少一个定时任务的定时任务信息,该定时任务信息包括执行周期信息和执行方式信息。其中,执行周期信息表示定时任务的执行周期,比如,执行周期信息可以包括开始时间和周期。执行方式信息标识定时任务的执行方式,比如,发邮件。
步骤202,根据执行周期生成当前周期任务列表和下一周期任务列表,当前周期任务列表中包含当前周期要执行的定时任务,下一周期任务列表中包含下一周期要执行的定时任务。
比如,扫描周期是1个小时,且当前时间是8点,则当前周期任务列表中包含的是8点需要执行的定时任务,下一周期任务列表中包含的是9点需要执行的定时任务。
步骤203,根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序。
本实施例中的子程序用于执行定时任务,且每个子程序可以执行一个定时任务。
计算机设备可以获取当前周期任务列表中定时任务的数量,以及下一周期任务列表中定时任务的数量,并根据这两个数量计算预定数量,创建预定数量的子程序。本实施例中提供了两种计算方式,下面分别对这两种计算方式进行说明。
当首次扫描时,采用第一种计算方式来创建子程序。具体的,获取当前周期任务列表中所包含的定时任务的数量和下一周期任务列表中所包含的定时任务的数量中的最大值;将最大值加上预设的冗余值,得到预定数量,冗余值表示冗余的子程序的数量;按照预定数量创建子程序。
本实施例中还设置有冗余的子程序,可以在子程序出现异常而无法执行定时任务时,通过冗余的子程序来执行定时任务,避免了现场创建子程序,从而可以节省多次创建子程序所导致的资源开销。其中,冗余值可以根据经验值设置,本实施例不对具体数值作限定。在一个示例中,可以设置冗余值为3。
假设当前周期任务列表中所包含的定时任务的数量为4,下一周期任务列表中所包含的定时任务的数量为6,冗余值为3,则预定数量=6+3=9,即计算机设备需要在当前周期创建9个子程序。相关技术中,若只根据当前周期任务列表来创建子程序,则计算机设备需要在当前周期创建7(4+3)个子程序,在下一周期创建2(6+3-7)个子程序,即需要创建两次子程序。在本实施例中,计算机设备可以在当前周期一次性创建9个子程序,相比于相关技术,可以少创建一次子程序,从而可以节省多次创建子程序所导致的资源开销。
在子程序创建完成后,计算机设备可以将定时任务分配给子程序,利用子程序执行定时任务。其中,在将定时任务分配给子程序后,计算机设备会将该子程序的状态设置为工作状态,待子程序向计算机设备反馈执行完毕的信号后,计算机设备再将该子程序的状态设置为空闲状态。这样,计算机设备可以根据子程序的状态来判断该子程序是否可用。
若将第i个周期中的一个定时任务分配给一个子程序,且该定时任务的执行时长大于扫描周期,则到第i+1个周期时该子程序必然还未完成定时任务,那么,该子程序在第i+1个周期无法被分配用来执行新的定时任务,即该子程序在第i+1个周期是不可用的。所以,当非首次扫描时,计算机设备还需要确定当前周期处于空闲状态的子程序(即在第i个周期可用的子程序),再结合处于空闲状态的子程序来创建预定数量的子程序。
当非首次扫描时,采用第二种计算方式来创建子程序。具体的,获取当前周期任务列表中所包含的定时任务的数量和下一周期任务列表中所包含的定时任务的数量中的最大值;统计当前时刻处于空闲状态的子程序的数量,得到空闲值;将最大值加上预设的冗余值后减去空闲值,得到预定数量,冗余值表示冗余的子程序的数量;按照预定数量创建子程序。
可选的,计算机设备还可以将最大值加上冗余值,将得到的第一计算结果与空闲值进行比较;若第一计算结果大于空闲值,则触发执行将最大值加上预设的冗余值后减去空闲值的步骤;若第一计算结果小于或等于空闲值,则不创建子程序。
假设当前周期任务列表中所包含的定时任务的数量为4,下一周期任务列表中所包含的定时任务的数量为6,冗余值为3,若空闲值为5,则比较6+3与5,由于6+3>5,所以,预定数量=6+3-5=4,即计算机设备需要在当前周期创建4个子程序;若空闲值为10,由于6+3<10,所以,计算机设备无需创建子程序。
步骤204,对于当前周期任务列表中的每个定时任务,为定时任务随机选择一个子程序,将定时任务分配给选出的子程序执行。
计算机设备可以将每个定时任务随机分配给一个子程序,利用子程序来执行定时任务。比如,将8点发邮件的定时任务随机分配给子程序A,将8点统计状态的定时任务随机分配给子程序B。
可选的,当子程序执行定时任务出错时,利用子程序发出报警信息。即,比如,子程序可以向管理员发送报警邮件,或者,子程序可以向管理员发送短消息等等,以提示管理员查找出错的原因。
步骤205,利用子程序将定时任务的执行结果写入执行日志中。
子程序可以将执行结果写入预先创建的执行日志中,以记录本次的任务执行情况。其中,执行结果可以包括执行开始时间、执行结束时间、执行时长、执行结果等等。
综上所述,本申请实施例提供的定时任务的执行方法,通过扫描各个项目的配置文件中的定时任务信息,再根据定时任务信息中的执行周期生成当前周期任务列表和下一周期任务列表,再根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序,最后利用子程序执行当前周期任务列表中的各个定时任务,这样,就可以直接扫描配置文件来执行定时任务,而无需管理员将定时任务写到服务器的任务列表中,既可以节省人力资源,也可以提高定时任务的执行效率。
另外,可以根据当前周期任务列表和下一周期任务列表中定时任务的数量创建子程序,从而可以在当前周期创建下一周期需要的子程序,即,将当前周期和下一周期的两个创建流程合并为一个创建流程,避免多次创建子程序所带来的资源开销。
在一个实施例中,计算机设备还可以对执行日志进行分析,根据分析结果管理定时任务。比如,计算机设备可以对定时任务的执行时长进行分析,从而管理定时任务,详见图3所示的流程图。
步骤301,当执行结果包括定时任务的执行时长时,统计平均执行时长大于扫描周期的m个目标定时任务,m≥1。
计算机设备可以统计一段时间内每个定时任务的平均执行时长,筛选出平均时长大于扫描周期的m个定时任务,本实施例中将筛选出的定时任务称为目标定时任务。
步骤302,再次按照扫描周期扫描各个项目的配置文件中的定时任务信息。
在到达扫描周期时,计算机设备再次扫描各个项目的配置文件中的定时任务信息。
步骤303,再次根据执行周期生成当前周期任务列表和下一周期任务列表。
若将第i个周期中的一个目标定时任务分配给一个子程序,则到第i+1个周期时该子程序必然还未完成该目标定时任务,那么,该子程序在第i+1个周期无法被分配用来执行新的定时任务,即该子程序在第i+1个周期是不可用的。所以,当非首次扫描时,计算机设备还需要确定当前周期处于空闲状态的子程序(即在第i个周期可用的子程序),并确定目标定时任务的数量(即在第i+1个周期不可用的子程序),最后结合处于空闲状态的子程序和目标定时任务的数量来创建预定数量的子程序,即执行步骤304。
步骤304,若当前周期任务列表中包含n个目标定时任务,则根据当前周期任务列表中定时任务的数量、下一周期任务列表中定时任务的数量、空闲值、冗余值和n创建预定数量的子程序,空闲值表示处于空闲状态的子程序的数量,冗余值表示冗余的子程序的数量,1≤n≤m。
具体的,根据当前周期任务列表中定时任务的数量、下一周期任务列表中定时任务的数量、空闲值、冗余值和n创建预定数量的子程序,包括:将下一周期任务列表中定时任务的数量加上n,得到第二计算结果;获取当前周期任务列表中所包含的定时任务的数量和第二计算结果中的最大值;将最大值加上冗余值后减去空闲值,得到预定数量;按照预定数量创建子程序。
可选的,计算机设备还可以将最大值加上冗余值,将得到的第三计算结果与空闲值进行比较;若第三计算结果大于空闲值,则触发执行将最大值加上冗余值后减去空闲值的步骤;若第三计算结果小于或等于空闲值,则不创建子程序。
假设当前周期任务列表中所包含的目标定时任务的数量为2,其他定时任务的数量为4,下一周期任务列表中所包含的定时任务的数量为7,冗余值为3,若空闲值为5,则比较(7+2)+3与5,由于(7+2)+3>5,所以,预定数量=(7+2)+3-5=7,即计算机设备需要在当前周期创建7个子程序;若空闲值为15,由于(7+2)+3<15,所以,计算机设备无需创建子程序。
步骤305,利用子程序执行当前周期任务列表中的各个定时任务。
计算机设备可以将每个定时任务随机分配给一个子程序,利用子程序来执行定时任务。
通过对执行日志进行分析,可以筛选出平均执行时长大于扫描周期的m个目标定时任务,即,每个目标定时任务在一个扫描周期内是无法执行完成的。若当前周期任务列表中包含n个目标定时任务,则在计算下一周期的定时任务的数量时,需要将该数量增加n,从而提高创建子程序的准确性。
请参考图4,其示出了本申请一个实施例提供的定时任务的执行装置的结构框图,该定时任务的执行装置可以应用于计算机设备中。该定时任务的执行装置,可以包括:
扫描模块410,用于按照扫描周期扫描各个项目的配置文件中的定时任务信息,定时任务信息用于指示定时任务的执行周期和执行方式;
生成模块420,用于根据执行周期生成当前周期任务列表和下一周期任务列表,当前周期任务列表中包含当前周期要执行的定时任务,下一周期任务列表中包含下一周期要执行的定时任务;
创建模块430,用于根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序;
执行模块440,用于利用子程序执行当前周期任务列表中的各个定时任务。
在一个可选的实施例中,创建模块430,还用于:
当首次扫描时,获取当前周期任务列表中所包含的定时任务的数量和下一周期任务列表中所包含的定时任务的数量中的最大值;
将最大值加上预设的冗余值,得到预定数量,冗余值表示冗余的子程序的数量;
按照预定数量创建子程序。
在一个可选的实施例中,创建模块430,还用于:
当非首次扫描时,获取当前周期任务列表中所包含的定时任务的数量和下一周期任务列表中所包含的定时任务的数量中的最大值;
统计当前时刻处于空闲状态的子程序的数量,得到空闲值;
将最大值加上预设的冗余值后减去空闲值,得到预定数量,冗余值表示冗余的子程序的数量;
按照预定数量创建子程序。
在一个可选的实施例中,创建模块430,还用于:
将最大值加上冗余值,将得到的第一计算结果与空闲值进行比较;
若第一计算结果大于空闲值,则触发执行将最大值加上预设的冗余值后减去空闲值的步骤;
若第一计算结果小于或等于空闲值,则不创建子程序。
在一个可选的实施例中,执行模块440,还用于:
对于当前周期任务列表中的每个定时任务,为定时任务随机选择一个子程序,将定时任务分配给选出的子程序执行。
请参考图5,在一个可选的实施例中,该装置还包括:
报警模块450,用于当子程序执行定时任务出错时,利用子程序发出报警信息。
在一个可选的实施例中,该装置还包括:
写入模块460,还用于利用子程序将定时任务的执行结果写入执行日志中。
在一个可选的实施例中,该装置还包括:
统计模块470,用于当执行结果包括定时任务的执行时长时,统计平均执行时长大于扫描周期的m个目标定时任务,m≥1;
扫描模块410,还用于再次按照扫描周期扫描各个项目的配置文件中的定时任务信息;
生成模块420,还用于再次根据执行周期生成当前周期任务列表和下一周期任务列表;
创建模块430,还用于若当前周期任务列表中包含n个目标定时任务,则根据当前周期任务列表中定时任务的数量、下一周期任务列表中定时任务的数量、空闲值、冗余值和n创建预定数量的子程序,空闲值表示处于空闲状态的子程序的数量,冗余值表示冗余的子程序的数量,1≤n≤m;
执行模块440,还用于利用子程序执行当前周期任务列表中的各个定时任务。
在一个可选的实施例中,创建模块430,还用于:
将下一周期任务列表中定时任务的数量加上n,得到第二计算结果;
获取当前周期任务列表中所包含的定时任务的数量和第二计算结果中的最大值;
将最大值加上冗余值后减去空闲值,得到预定数量;
按照预定数量创建子程序。
在一个可选的实施例中,创建模块430,还用于:
将最大值加上冗余值,将得到的第三计算结果与空闲值进行比较;
若第三计算结果大于空闲值,则触发执行将最大值加上冗余值后减去空闲值的步骤;
若第三计算结果小于或等于空闲值,则不创建子程序。
综上所述,本申请实施例提供的定时任务的执行装置,通过扫描各个项目的配置文件中的定时任务信息,再根据定时任务信息中的执行周期生成当前周期任务列表和下一周期任务列表,再根据当前周期任务列表和下一周期任务列表中定时任务的数量创建预定数量的子程序,最后利用子程序执行当前周期任务列表中的各个定时任务,这样,就可以直接扫描配置文件来执行定时任务,而无需管理员将定时任务写到服务器的任务列表中,既可以节省人力资源,也可以提高定时任务的执行效率。
另外,可以根据当前周期任务列表和下一周期任务列表中定时任务的数量创建子程序,从而可以在当前周期创建下一周期需要的子程序,即,将当前周期和下一周期的两个创建流程合并为一个创建流程,避免多次创建子程序所带来的资源开销。
通过对执行日志进行分析,可以筛选出平均执行时长大于扫描周期的m个目标定时任务,即,每个目标定时任务在一个扫描周期内是无法执行完成的。若当前周期任务列表中包含n个目标定时任务,则在计算下一周期的定时任务的数量时,需要将该数量增加n,从而提高创建子程序的准确性。
本申请一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上所述的定时任务的执行方法。
本申请一个实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的定时任务的执行方法。
需要说明的是:上述实施例提供的定时任务的执行装置在进行定时任务的执行时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将定时任务的执行装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的定时任务的执行装置与定时任务的执行方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (13)
1.一种定时任务的执行方法,其特征在于,所述方法包括:
按照扫描周期扫描各个项目的配置文件中的定时任务信息,所述定时任务信息用于指示定时任务的执行周期和执行方式;
根据所述执行周期生成当前周期任务列表和下一周期任务列表,所述当前周期任务列表中包含当前周期要执行的定时任务,所述下一周期任务列表中包含下一周期要执行的定时任务;
根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序;
利用所述子程序执行所述当前周期任务列表中的各个定时任务。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序,包括:
当首次扫描时,获取所述当前周期任务列表中所包含的定时任务的数量和所述下一周期任务列表中所包含的定时任务的数量中的最大值;
将所述最大值加上预设的冗余值,得到所述预定数量,所述冗余值表示冗余的子程序的数量;
按照所述预定数量创建所述子程序。
3.根据权利要求1所述的方法,其特征在于,所述根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序,包括:
当非首次扫描时,获取所述当前周期任务列表中所包含的定时任务的数量和所述下一周期任务列表中所包含的定时任务的数量中的最大值;
统计当前时刻处于空闲状态的子程序的数量,得到空闲值;
将所述最大值加上预设的冗余值后减去所述空闲值,得到所述预定数量,所述冗余值表示冗余的子程序的数量;
按照所述预定数量创建所述子程序。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述最大值加上所述冗余值,将得到的第一计算结果与所述空闲值进行比较;
若所述第一计算结果大于所述空闲值,则触发执行所述将所述最大值加上预设的冗余值后减去所述空闲值的步骤;
若所述第一计算结果小于或等于所述空闲值,则不创建所述子程序。
5.根据权利要求1所述的方法,其特征在于,所述利用所述子程序执行所述当前周期任务列表中的各个定时任务,包括:
对于所述当前周期任务列表中的每个定时任务,为所述定时任务随机选择一个子程序,将所述定时任务分配给选出的所述子程序执行。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述子程序执行所述定时任务出错时,利用所述子程序发出报警信息。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述利用所述子程序执行所述当前周期任务列表中的各个定时任务之后,所述方法还包括:
利用所述子程序将所述定时任务的执行结果写入执行日志中。
8.根据权利要求7所述的方法,其特征在于,在所述利用所述子程序将所述定时任务的执行结果写入执行日志中之后,所述方法还包括:
当所述执行结果包括所述定时任务的执行时长时,统计平均执行时长大于所述扫描周期的m个目标定时任务,m≥1;
再次按照所述扫描周期扫描各个项目的配置文件中的定时任务信息;
再次根据所述执行周期生成当前周期任务列表和下一周期任务列表;
若所述当前周期任务列表中包含n个所述目标定时任务,则根据所述当前周期任务列表中定时任务的数量、所述下一周期任务列表中定时任务的数量、空闲值、冗余值和所述n创建预定数量的子程序,所述空闲值表示处于空闲状态的子程序的数量,所述冗余值表示冗余的子程序的数量,1≤n≤m;
利用所述子程序执行所述当前周期任务列表中的各个定时任务。
9.根据权利要求8所述的方法,其特征在于,所述根据所述当前周期任务列表中定时任务的数量、所述下一周期任务列表中定时任务的数量、空闲值、冗余值和所述n创建预定数量的子程序,包括:
将所述下一周期任务列表中定时任务的数量加上所述n,得到第二计算结果;
获取所述当前周期任务列表中所包含的定时任务的数量和所述第二计算结果中的最大值;
将所述最大值加上所述冗余值后减去所述空闲值,得到所述预定数量;
按照所述预定数量创建所述子程序。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
将所述最大值加上所述冗余值,将得到的第三计算结果与所述空闲值进行比较;
若所述第三计算结果大于所述空闲值,则触发执行所述将所述最大值加上所述冗余值后减去所述空闲值的步骤;
若所述第三计算结果小于或等于所述空闲值,则不创建所述子程序。
11.一种定时任务的执行装置,其特征在于,所述装置包括:
扫描模块,用于按照扫描周期扫描各个项目的配置文件中的定时任务信息,所述定时任务信息用于指示定时任务的执行周期和执行方式;
生成模块,用于根据所述执行周期生成当前周期任务列表和下一周期任务列表,所述当前周期任务列表中包含当前周期要执行的定时任务,所述下一周期任务列表中包含下一周期要执行的定时任务;
创建模块,用于根据所述当前周期任务列表和所述下一周期任务列表中定时任务的数量创建预定数量的子程序;
执行模块,用于利用所述子程序执行所述当前周期任务列表中的各个定时任务。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至10任一所述的定时任务的执行方法。
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至10任一所述的定时任务的执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147383.1A CN113590300B (zh) | 2021-09-29 | 2021-09-29 | 定时任务的执行方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147383.1A CN113590300B (zh) | 2021-09-29 | 2021-09-29 | 定时任务的执行方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590300A true CN113590300A (zh) | 2021-11-02 |
CN113590300B CN113590300B (zh) | 2022-03-25 |
Family
ID=78242542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111147383.1A Active CN113590300B (zh) | 2021-09-29 | 2021-09-29 | 定时任务的执行方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590300B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184404A1 (en) * | 2001-06-01 | 2002-12-05 | Kenneth Lerman | System and method of maintaining a timed event list |
CN103268247A (zh) * | 2013-06-05 | 2013-08-28 | 中国电子科技集团公司第十五研究所 | 任务执行及调整线程池中保留线程的数量的方法和装置 |
CN106357426A (zh) * | 2016-08-26 | 2017-01-25 | 东北大学 | 一种基于工业云的大规模分布式智能数据采集系统及方法 |
CN109857529A (zh) * | 2019-01-15 | 2019-06-07 | 深圳业拓讯通信科技有限公司 | 一种动态加载及调度定时任务的方法及装置 |
CN110245009A (zh) * | 2019-05-14 | 2019-09-17 | 平安科技(深圳)有限公司 | 周期任务分配方法、装置、计算机设备和存储介质 |
CN113448712A (zh) * | 2021-07-12 | 2021-09-28 | 中国银行股份有限公司 | 任务调度执行方法及装置 |
-
2021
- 2021-09-29 CN CN202111147383.1A patent/CN113590300B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184404A1 (en) * | 2001-06-01 | 2002-12-05 | Kenneth Lerman | System and method of maintaining a timed event list |
CN103268247A (zh) * | 2013-06-05 | 2013-08-28 | 中国电子科技集团公司第十五研究所 | 任务执行及调整线程池中保留线程的数量的方法和装置 |
CN106357426A (zh) * | 2016-08-26 | 2017-01-25 | 东北大学 | 一种基于工业云的大规模分布式智能数据采集系统及方法 |
CN109857529A (zh) * | 2019-01-15 | 2019-06-07 | 深圳业拓讯通信科技有限公司 | 一种动态加载及调度定时任务的方法及装置 |
CN110245009A (zh) * | 2019-05-14 | 2019-09-17 | 平安科技(深圳)有限公司 | 周期任务分配方法、装置、计算机设备和存储介质 |
CN113448712A (zh) * | 2021-07-12 | 2021-09-28 | 中国银行股份有限公司 | 任务调度执行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113590300B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297701B (zh) | 数据处理作业调度方法、装置、计算机设备及存储介质 | |
CN110231994B (zh) | 内存分析方法、装置和计算机可读存储介质 | |
US6269457B1 (en) | Technology regression and verification acceptance method | |
US10528456B2 (en) | Determining idle testing periods | |
CN112631919A (zh) | 一种对比测试方法、装置、计算机设备及存储介质 | |
US11169910B2 (en) | Probabilistic software testing via dynamic graphs | |
CN111367792A (zh) | 一种测试方法、装置、存储介质及电子设备 | |
CN111290942A (zh) | 压力测试方法、装置以及计算机可读介质 | |
CN113590300B (zh) | 定时任务的执行方法、装置、存储介质及设备 | |
Kranzlmüller et al. | NOPE: A nondeterministic program evaluator | |
CN114077540A (zh) | 一种接口测试系统及接口测试方法 | |
CN116126937A (zh) | 作业调度方法、装置、电子设备及存储介质 | |
CN115185825A (zh) | 接口测试的调度方法及装置 | |
CN113836013A (zh) | 一种埋点测试方法、装置、计算机设备和计算机可读存储介质 | |
CN112817922A (zh) | 日志动态打印方法、装置、计算机设备及存储介质 | |
CN111274090A (zh) | 作业处理方法、装置、介质及电子设备 | |
CN110908918A (zh) | 针对多个相互依赖的node.js模块的单元测试方法及装置 | |
CN112527265A (zh) | 一种日志自动注入的方法和计算机设备 | |
CN112817812B (zh) | 序列翻译模拟方法、装置、设备及存储介质 | |
CN113377719B (zh) | 一种系统异常关机时间获取方法及系统 | |
CN116136813B (zh) | 适配多型号的航电信号仿真方法、装置及存储介质 | |
CN116451976B (zh) | 一种基于自动化生产的生产流程配置方法及相关设备 | |
CN111008131B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN110309038B (zh) | 性能测试方法、装置、电子设备及计算机可读存储介质 | |
CN108959098B (zh) | 一种针对分布式系统程序死锁缺陷的测试系统及方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 307, Zijin Oriental building, 288 Qiyue street, Suzhou Industrial Park, Suzhou City, Jiangsu Province Patentee after: Tianju DIHE (Suzhou) Technology Co.,Ltd. Address before: Room 307, Zijin Oriental building, 288 Qiyue street, Suzhou Industrial Park, Suzhou City, Jiangsu Province Patentee before: TIANJU DIHE (SUZHOU) DATA CO.,LTD. |
|
CP01 | Change in the name or title of a patent holder |