CN109298951A - Celery任务的执行方法及终端设备 - Google Patents
Celery任务的执行方法及终端设备 Download PDFInfo
- Publication number
- CN109298951A CN109298951A CN201810953129.2A CN201810953129A CN109298951A CN 109298951 A CN109298951 A CN 109298951A CN 201810953129 A CN201810953129 A CN 201810953129A CN 109298951 A CN109298951 A CN 109298951A
- Authority
- CN
- China
- Prior art keywords
- celery
- task
- plan
- celery task
- duration
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明适用于数据处理技术领域,提供了Celery任务的执行方法、终端设备以及计算机可读存储介质,包括:将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。本发明实施例基于Linux系统的计划任务工具生成计划时间,并按照计划时间执行Celery任务,提升了执行Celery任务的准确性。
Description
技术领域
本发明属于数据处理技术领域,尤其涉及Celery任务的执行方法、终端设备以及计算机可读存储介质。
背景技术
Celery是基于python语言开发的分布式任务队列,适用于数据量级大,性能需求高的应用场景。Celery通过Celery任务来实现数据处理,在处理过程中,每个Celery任务都会生成任务标识,在Celery任务执行完成后,用户通过任务标识查看Celery任务的执行结果。
在现有技术中,由于Celery本身是基于python语言开发,故对于某些需要计划执行的Celery任务来说,通常是调用python中的time模块,设置在预期的时间执行Celery任务。但是,在实际应用中,time模块存在执行异常,即当多个Celery任务同时调用time模块,并设置在同一时刻执行时,会发生同一个Celery任务存在两个任务标识的情况,导致执行结果异常。
发明内容
有鉴于此,本发明实施例提供了Celery任务的执行方法、终端设备以及计算机可读存储介质,以解决现有技术中调用time模块执行Celery任务时,执行过程异常的问题。
本发明实施例的第一方面提供了一种Celery任务的执行方法,包括:
将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
本发明实施例的第二方面提供了一种终端设备,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
本发明实施例的第三方面提供了一种计算机可读存储介质,包括:
将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
本发明实施例与现有技术相比存在的有益效果是:
本发明实施例通过linux系统的计划任务工具生成计划时间,并将包含计划时间的计划任务记录存储至计划数据库,如果当前时间与计划时间符合,则根据计划时间调用与计划任务记录对应的Celery任务,并执行Celery任务,本发明实施例基于计划任务工具生成的计划时间实现了Celery任务的定期执行,防止了因调用time模块可能出现的执行异常,提升了执行Celery任务的稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的Celery任务的执行方法的实现流程图;
图2是本发明实施例二提供的Celery任务的执行方法的实现流程图;
图3是本发明实施例三提供的Celery任务的执行方法的实现流程图;
图4是本发明实施例四提供的Celery任务的执行方法的实现流程图;
图5是本发明实施例五提供的Celery任务的执行方法的实现流程图;
图6是本发明实施例六提供的Celery系统的示意图;
图7是本发明实施例七提供的终端设备的结构框图;
图8是本发明实施例八提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
本发明实施例通过将包含计划时间的计划任务记录存储至计划数据库,该计划时间由linux系统的计划任务工具生成,然后获取当前时间,若当前时间与计划时间相符,则根据当前时间配置与计划任务记录对应的Celery任务,最后将配置完成的Celery任务添加至消息队列,当Celery任务位于消息队列的队首时,将Celery任务分配至执行进程中,并执行Celery任务,本发明实施例基于计划任务工具生成计划时间,并根据计划时间定期执行Celery任务,提升了执行Celery任务的稳定性和准确性。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1示出了本发明实施例提供的Celery任务的执行方法的实现流程,详述如下:
在S101中,将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成。
为了更好地说明本发明实施例的内容,首先对Celery进行介绍,Celery是基于python语言开发的分布式异步消息任务队列,适用于数据量级大,性能需求高的应用场景。本发明实施例中的Celery任务运行于Celery系统中,Celery系统包括客户端、消息队列(broker)以及执行进程(worker),除此之外,Celery系统还可包括后端数据库(backend),后端数据库用于存放Celery任务的执行结果。图6为本发明实施例提供的Celery系统的示意图,如图6所示,首先由客户端将编写好的Celery任务派发至消息队列,消息队列在Celery系统中作为一个信息传输的中间件,然后由执行进程从消息队列中读取并执行Celery任务,其中,消息队列符合先进先出原则。执行进程在执行完成Celery任务后,将执行结果存放至后端数据库中,客户端在Celery任务完成时,可获取与Celery任务对应的任务标识,客户端通过任务标识即可在后端数据库查询到执行结果。
相较于传统的通过调用python语言中的time模块来实现Celery任务的计划执行,在本发明实施例中,通过linux系统自带的计划任务工具生成计划时间,其中,计划任务工具优选为计划任务cron,计划时间为用户预期的Celery任务的执行时间,计划时间可为精确的时间,如1月1日1时1分,也可以为时间频率,比如每五分钟执行一次。为了便于理解计划时间的生成过程,下文阐述通过计划任务cron下的crontab命令来生成计划时间的过程,但应获知的是,计划时间的生成方式并不仅限于此。具体地,按照crontab的设置格式设置计划时间,设置格式包含六个字段,分别为minute、hour、day、month、week和command,分别对应分钟、小时、天、月、星期内的天数和待执行命令。除开设置格式中的待执行命令外,用户可根据实际应用场景选择是否为设置格式中的某个字段或某几个字段赋值以及选择赋予的具体数值,举例来说,计划时间为“4,6****command”,则指示在每小时的第4分钟和第6分钟执行command命令;计划时间为“**/5***command”,指示每隔5小时执行一次command命令(正斜线/代表时间间隔)。值得一提的是,如果对crontab设置格式中的前五个关于时间的字段都不进行赋值,则默认每隔1分钟执行一次待执行命令。此外,在设置计划时间时,为了使计划时间与Celery任务相关,将计划时间中的待执行命令设置为Celery任务。
在设置完成计划时间后,将计划时间添加至计划任务记录中,并将计划任务记录存储至预设的计划数据库,其中,该计划数据库与前文的后端数据库不同。设置计划任务记录是为了便于实现除定期执行Celery任务之外的其他功能,比如还可在计划任务记录内设置预期执行时长或预期执行次数等,具体内容在后文进行阐述。当然,计划任务记录也设置为仅包含计划时间。
在S102中,获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务。
在已对计划任务记录进行存储后,获取当前时间,并将当前时间与计划任务记录中的计划时间进行比对,如果当前时间与计划时间相符,则根据当前时间对与计划任务记录对应的Celery任务进行配置,其中,配置Celery任务的前提是Celery系统中的客户端已发送该Celery任务。具体地,在配置过程中,将当前时间写入至该Celery任务的配置文件中,写入完成后,由于当前时间已达到,Celery系统便可根据Celery任务的配置文件,对该Celery任务进行后续的调度执行。
可选地,在计划任务记录内配置对应的Celery任务的任务名称,并在当前时间与计划时间相符时,根据当前时间配置与任务名称对应的Celery任务。为了便于建立计划任务记录与Celery任务的映射关系,可在计划任务记录内配置Celery任务的任务名称,并在当前时间与计划任务记录中的计划时间相符时,根据任务名称查找到对应的Celery任务,从而对该Celery任务进行配置。在此基础上,还可将计划任务记录设置为包括多个计划时间,并对每个计划时间都配置一个Celery任务的任务名称,从而基于一个计划任务记录对多个Celery任务进行管控,提升了对Celery任务的管控效率。
在S103中,将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
在完成对Celery任务的配置后,Celery系统将Celery任务插入至消息队列的队尾,并当Celery任务排至消息队列的队首时,将Celery任务分配至空闲的执行进程中,由执行进程执行该Celery任务。本发明实施例中的消息队列的种类可根据实际应用场景进行确定,比如消息队列可为Redis消息队列。
可选地,为每个执行进程设置任务上限,当执行进程执行的Celery任务的数量达到任务上限时,销毁执行进程。在本发明实施例中,可对Celery系统中的每个执行进程设置任务上限,并对每个执行进程已执行的Celery任务的数量进行统计,若某个执行进程已执行的Celery任务的数量达到任务上限,则销毁该执行进程,从而释放内存,防止内存泄漏。值得一提的是,在销毁一个执行进程后,可再新建一个执行进程。
通过图1所示实施例可知,在本发明实施例一中,通过将计划任务记录存储至计划数据库,计划任务记录包括计划时间,计划时间由linux系统的计划任务工具生成,然后获取当前时间,若当前时间与计划时间相符,则根据当前时间配置与计划任务记录对应的Celery任务,最后将配置完成的Celery任务添加至消息队列,当Celery任务位于消息队列的队首时,将Celery任务分配至执行进程中,以执行Celery任务,本发明实施例避免了调用time模块,而是基于计划任务工具生成计划时间,有效防止Celery任务出现执行异常,提升了执行Celery任务的安全性和准确性。
图2所示,是在本发明实施例一的基础上,对执行Celery任务之后,更新计划时间的过程进行细化后得到的一种实现方法。本发明实施例提供了Celery任务的执行方法的实现流程图,如图2所示,该执行方法可以包括以下步骤:
在S201中,获取所述Celery任务的执行日志,并从所述执行日志中获取延迟时长,所述延迟时长为从执行所述Celery任务到为所述Celery任务分配参数之间的时长。
在执行Celery任务之前,可能需要从外部系统调取参数,而由于外部系统向Celery任务传输参数的过程会受到网络状况等因素的影响,故在正式执行Celery任务之前可能会存在一定的延迟时长,导致Celery任务的实际执行时间并不是步骤S101中设定的计划时间。举例来说,用户在计划数据库中设定的计划时间为下午4点,但外部系统将参数传输至Celery任务的延迟时长为2分钟,则Celery任务的实际执行时间为下午4点2分,与计划时间不符。故在本发明实施例中,在执行完Celery任务后,获取与该Celery任务对应的执行日志,并从执行日志中获取延迟时长,该延迟时长是从该Celery任务被执行的时间开始(Celery任务在该时间并未获取到参数),到Celery任务获取到外部系统传输的参数的时间之间的时长。值得一提的是,可基于Celery系统的日志模块如logging模块记录Celery任务的执行日志。
可选地,获取执行多次Celery任务的执行日志,并对执行日志中的延迟时长进行均值取值,得到平均延迟时长。在本发明实施例中,还可获取执行多次(可根据实际应用场景设定具体的数值,比如一百次)Celery任务的执行日志,并对执行日志进行分析,得到每次执行Celery任务的延迟时长,并对所有的延迟时长进行均值处理,得到平均延迟时长,提升了延迟时长计算的准确性。
在S202中,根据所述延迟时长更新所述计划任务记录中的所述计划时间,并将更新后的所述计划时间存储至所述计划数据库中。
在得到延迟时长(或平均延迟时长)后,根据延迟时长对计划数据库中存储的计划时间进行更新,具体地,从计划数据库中提取出计划时间,将计划时间基于延迟时长进行前移,前移的时长与延迟时长相同,并将进行前移后的计划时间存储至计划数据库。当然,也可以不提取计划时间,直接对计划数据库中的计划时间进行更新。举例来说,若用户预期的执行时间为下午4点,即设置的计划时间为下午4点,而计算得到的延迟时长为2分钟,则进行更新后的计划时间为下午3点58分,当Celery任务按照更新后的计划时间进行配置后,实际的执行时间为更新后的计划时间(下午3点58分)加上延迟时长(2分钟),即为下午4点,与用户预期的执行时间相同。
通过图2所示实施例可知,在本发明实施例中,通过获取Celery任务的执行日志,并从执行日志中获取延迟时长,延迟时长为从执行Celery任务到为Celery任务分配参数之间的时长,然后根据延迟时长更新计划任务记录中的计划时间,并将更新后的计划时间存储至计划数据库中,本发明实施例基于延迟时长更新计划时间,提升了执行Celery任务的及时性。
图3所示,是在本发明实施例一的基础上,并在计划任务记录还包括预期执行时长及异常次数的基础上,对执行Celery任务之后的过程进行细化后得到的一种实现方法。本发明实施例提供了Celery任务的执行方法的实现流程图,如图3所示,该执行方法可以包括以下步骤:
在S301中,获取所述Celery任务的已执行时长,并将所述已执行时长与所述预期执行时长进行比较。
在本发明实施例中,设置在计划数据库中存储的计划任务记录还包括预期执行时长及异常次数,其中,预期执行时长指示Celery任务的执行时长上限。在执行进程从消息队列中取出Celery任务时开始进行计时,将计时的结果记录为已执行时长,直到该Celery任务执行完成,则停止计时。在得到已执行时长后,将已执行时长与预期执行时长进行比较,从而确定该Celery任务是否出现执行异常。
在S302中,若所述已执行时长超过所述预期执行时长,则对所述计划任务记录中的异常次数进行累加,并当所述异常次数达到预设阈值时,输出告警提示。
如果已执行时长未超过预期执行时长,则确定Celery任务处于正常执行状态,由执行进程继续执行Celery任务;如果已执行时长超过预期执行时长,则确定Celery任务处于异常执行状态,对计划数据库的计划任务记录中的异常次数执行加一操作。在对异常次数进行累加后,检测异常次数是否达到预设阈值,如果未达到预设阈值,则由执行进程继续执行该Celery任务;如果达到预设阈值,则输出基于该Celery任务的告警提示,本发明实施例对告警提示的具体提示方式并不进行限定,比如提示方式可为在线提示、邮件提示或短信提示等方式。
可选地,设置终止时长,并当已执行时长超过终止时长,终止执行Celery任务。在本发明实施例中,还可设置终止时长,终止时长可设置在计划任务记录内,也可设置在Celery任务的代码内。执行进程在执行Celery任务时,读取终止时长,并将已执行时长与终止时长进行比较,若已执行时长未超过终止时长,则继续执行该Celery任务;若已执行时长超过终止时长,则对该Celery任务执行终止操作,终止操作可以是杀死操作,具体可发送SIGKILL信号杀死该Celery任务,终止操作还可以是将该Celery任务转移至其他空闲的执行进程进行执行。通过上述方法可防止一个执行进程被Celery任务过度占用,提升了Celery任务的执行效率。
通过图3所示实施例可知,在本发明实施例中,通过获取Celery任务的已执行时长,并将已执行时长与预期执行时长进行比较,若已执行时长超过预期执行时长,则对计划任务记录中的异常次数进行累加,并当异常次数达到预设阈值时,输出告警提示,本发明实施例提升了执行Celery任务的安全性。
图4所示,是在本发明实施例一的基础上,并在计划数据库包括多个计划任务记录,每个计划任务记录对应一个优先级的基础上,对将Celery任务添加至消息队列的过程进行细化后得到的一种实现方法。本发明实施例提供了Celery任务的执行方法的实现流程图,如图4所示,该执行方法可以包括以下步骤:
在S401中,确定与多个所述计划任务记录对应的多个所述Celery任务,并按照所述优先级从高到低的顺序对多个所述Celery任务进行排序。
在实际应用场景中,可能存在多个不同的需要执行的Celery任务,而对于不同的Celery任务需要设置不同的计划时间,故在本发明实施例中,在计划数据库中设置多个计划任务记录,每个计划任务记录对应一个Celery任务。在此基础上,某些Celery任务需要进行优先处理,故在设置计划任务记录时,设置与计划任务记录对应的优先级,优先级可设置在计划任务记录内部,以优先级标识的形式进行体现。对于计划时间都为当前时间的多个Celery任务,在根据当前时间对多个Celery任务配置后,按照优先级从高到低的顺序对多个Celery任务进行排序。其中,对于优先级相同的两个以上的Celery任务,可采取随机排序方式进行排序。
在S402中,将排序后的多个所述Celery任务依次添加至所述消息队列。
排序完成后,将排序后的多个Celery任务依次插入至消息队列的队尾。举例来说,排序后的多个Celery任务依次为Task1,Task2和Task3,则首先将Task1插入至消息队列的队尾,再将Task2插入至消息队列的队尾(前提是消息队列的队尾为空),最后将Task3插入至消息队列的队尾(前提是消息队列的队尾为空)。
通过图4所示实施例可知,在本发明实施例中,通过确定与多个计划任务记录对应的多个Celery任务,并按照优先级从高到低的顺序对多个Celery任务进行排序,然后将排序后的多个Celery任务依次添加至消息队列,本发明实施例根据优先级实现了Celery任务的有序执行,提升了执行Celery任务的针对性。
图5所示,是在本发明实施例一的基础上,并在计划任务记录还包括预期执行次数的基础上,对执行Celery任务之后的过程进行细化后得到的一种实现方法。本发明实施例提供了Celery任务的执行方法的实现流程图,如图5所示,该执行方法可以包括以下步骤:
在S501中,对所述计划任务记录中的预期执行次数执行减一操作。
在本发明实施例中,在计划任务记录内还设置预期执行次数,该预期执行次数指示Celery任务的执行次数上限。举例来说,某个Celery任务需要每天早上八点对业务价值进行计算,而业务价值的计算设定在30天内即可,故可设置与该Celery任务对应的计划任务记录中的计划时间为每天早上八点,设置计划任务记录中的预期执行次数为30次。在执行进程执行完成Celery任务后,对与该Celery任务对应的计划任务记录中的预期执行次数执行减一操作。
在S502中,若检测到所述预期执行次数为零,则对所述Celery任务进行禁用。
在执行减一操作后,检测预期执行次数是否等于零,若预期执行次数不为零,则不进行操作;若预期执行次数等于零,则对Celery任务进行禁用操作,本发明实施例对禁用操作的形式并不进行限定,比如禁用操作可以是在Celery系统中移除该Celery任务,可以是对该Celery任务设置禁用标识,该禁用标识用于提示Celery系统不执行该Celery任务。
通过图5所示实施例可知,在本发明实施例中,通过对计划任务记录中的预期执行次数执行减一操作,若检测到预期执行次数为零,则对Celery任务进行禁用,本发明实施例实现了Celery任务的有限次执行,提升了执行Celery任务的规范性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图7示出了本发明实施例提供的终端设备的结构框图,该终端设备包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。
参见图7,所述终端设备包括:
存储单元71,用于将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
配置单元72,用于获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
执行单元73,用于将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
可选地,所述执行单元73,还包括:
延迟获取单元,用于获取所述Celery任务的执行日志,并从所述执行日志中获取延迟时长,所述延迟时长为从执行所述Celery任务到为所述Celery任务分配参数之间的时长;
更新单元,用于根据所述延迟时长更新所述计划任务记录中的所述计划时间,并将更新后的所述计划时间存储至所述计划数据库中。
可选地,所述计划任务记录还包括预期执行时长及异常次数,所述执行单元73,还包括:
比较单元,用于获取所述Celery任务的已执行时长,并将所述已执行时长与所述预期执行时长进行比较;
告警单元,用于若所述已执行时长超过所述预期执行时长,则对所述计划任务记录中的异常次数进行累加,并当所述异常次数达到预设阈值时,输出告警提示。
可选地,所述计划数据库包括多个所述计划任务记录,每个所述计划任务记录对应一个优先级,所述执行单元73,包括:
排序单元,用于确定与多个所述计划任务记录对应的多个所述Celery任务,并按照所述优先级从高到低的顺序对多个所述Celery任务进行排序;
添加单元,用于将排序后的多个所述Celery任务依次添加至所述消息队列。
可选地,所述计划任务记录还包括预期执行次数,所述执行单元73,还包括:
减一执行单元,用于对所述计划任务记录中的预期执行次数执行减一操作;
禁用单元,用于若检测到所述预期执行次数为零,则对所述Celery任务进行禁用。
因此,本发明实施例提供的终端设备基于计划任务工具生成计划时间,并按照计划时间执行Celery任务,提升了执行Celery任务的准确性。
图8是本发明实施例提供的终端设备的示意图。如图8所示,该实施例的终端设备8包括:处理器80、存储器81以及存储在所述存储器81中并可在所述处理器80上运行的计算机程序82,例如Celery任务的执行程序。所述处理器80执行所述计算机程序82时实现上述各个Celery任务的执行方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,所述处理器80执行所述计算机程序82时实现上述各终端设备实施例中各单元的功能,例如图7所示单元71至73的功能。
示例性的,所述计算机程序82可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器81中,并由所述处理器80执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序82在所述终端设备8中的执行过程。例如,所述计算机程序82可以被分割成存储单元、配置单元和执行单元,各单元具体功能如下:
存储单元,用于将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
配置单元,用于获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
执行单元,用于将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
所述终端设备8可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是终端设备8的示例,并不构成对终端设备8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器80可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器81可以是所述终端设备8的内部存储单元,例如终端设备8的硬盘或内存。所述存储器81也可以是所述终端设备8的外部存储设备,例如所述终端设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器81还可以既包括所述终端设备8的内部存储单元也包括外部存储设备。所述存储器81用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将所述终端设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的终端设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种Celery任务的执行方法,其特征在于,包括:
将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
2.如权利要求1所述的执行方法,其特征在于,所述执行所述Celery任务之后,还包括:
获取所述Celery任务的执行日志,并从所述执行日志中获取延迟时长,所述延迟时长为从执行所述Celery任务到为所述Celery任务分配参数之间的时长;
根据所述延迟时长更新所述计划任务记录中的所述计划时间,并将更新后的所述计划时间存储至所述计划数据库中。
3.如权利要求1所述的执行方法,其特征在于,所述计划任务记录还包括预期执行时长及异常次数,所述执行所述Celery任务之后,还包括:
获取所述Celery任务的已执行时长,并将所述已执行时长与所述预期执行时长进行比较;
若所述已执行时长超过所述预期执行时长,则对所述计划任务记录中的异常次数进行累加,并当所述异常次数达到预设阈值时,输出告警提示。
4.如权利要求1所述的执行方法,其特征在于,所述计划数据库包括多个所述计划任务记录,每个所述计划任务记录对应一个优先级,所述将所述Celery任务添加至消息队列,包括:
确定与多个所述计划任务记录对应的多个所述Celery任务,并按照所述优先级从高到低的顺序对多个所述Celery任务进行排序;
将排序后的多个所述Celery任务依次添加至所述消息队列。
5.如权利要求1所述的执行方法,其特征在于,所述计划任务记录还包括预期执行次数,所述执行所述Celery任务之后,还包括:
对所述计划任务记录中的预期执行次数执行减一操作;
若检测到所述预期执行次数为零,则对所述Celery任务进行禁用。
6.一种终端设备,其特征在于,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
将计划任务记录存储至计划数据库,所述计划任务记录包括计划时间,所述计划时间由linux系统的计划任务工具生成;
获取当前时间,若所述当前时间与所述计划时间相符,则根据所述当前时间配置与所述计划任务记录对应的Celery任务;
将所述Celery任务添加至消息队列,并当所述Celery任务位于所述消息队列的队首时,将所述Celery任务分配至执行进程中,执行所述Celery任务。
7.如权利要求6所述的终端设备,其特征在于,所述执行所述Celery任务之后,还包括:
获取所述Celery任务的执行日志,并从所述执行日志中获取延迟时长,所述延迟时长为从执行所述Celery任务到为所述Celery任务分配参数之间的时长;
根据所述延迟时长更新所述计划任务记录中的所述计划时间,并将更新后的所述计划时间存储至所述计划数据库中。
8.如权利要求6所述的终端设备,其特征在于,所述计划任务记录还包括预期执行时长及异常次数,所述执行所述Celery任务之后,还包括:
获取所述Celery任务的已执行时长,并将所述已执行时长与所述预期执行时长进行比较;
若所述已执行时长超过所述预期执行时长,则对所述计划任务记录中的异常次数进行累加,并当所述异常次数达到预设阈值时,输出告警提示。
9.如权利要求6所述的终端设备,其特征在于,所述计划数据库包括多个所述计划任务记录,每个所述计划任务记录对应一个优先级,所述将所述Celery任务添加至消息队列,包括:
确定与多个所述计划任务记录对应的多个所述Celery任务,并按照所述优先级从高到低的顺序对多个所述Celery任务进行排序;
将排序后的多个所述Celery任务依次添加至所述消息队列。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810953129.2A CN109298951A (zh) | 2018-08-21 | 2018-08-21 | Celery任务的执行方法及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810953129.2A CN109298951A (zh) | 2018-08-21 | 2018-08-21 | Celery任务的执行方法及终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109298951A true CN109298951A (zh) | 2019-02-01 |
Family
ID=65165272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810953129.2A Pending CN109298951A (zh) | 2018-08-21 | 2018-08-21 | Celery任务的执行方法及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109298951A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046041A (zh) * | 2019-04-15 | 2019-07-23 | 北京中安智达科技有限公司 | 一种基于celery调度框架的数据采集方法 |
CN111414153A (zh) * | 2020-03-27 | 2020-07-14 | 四川虹美智能科技有限公司 | 可配置的计划任务处理方法及装置 |
WO2020192733A1 (zh) * | 2019-03-27 | 2020-10-01 | 京东方科技集团股份有限公司 | 定时任务配置方法、服务器、系统和计算机可读存储介质 |
WO2021147382A1 (zh) * | 2020-01-21 | 2021-07-29 | 上海万物新生环保科技集团有限公司 | 一种检测任务执行方法及设备 |
CN113381668A (zh) * | 2021-07-21 | 2021-09-10 | 无锡台翔电子技术发展有限公司 | 用于电机控制器的控制方法、电机控制器及电动车用电机 |
CN113411226A (zh) * | 2020-03-16 | 2021-09-17 | 北京奇虎科技有限公司 | 路由器分布式自动化测试方法、系统、存储介质及其计算机设备 |
CN113448749A (zh) * | 2021-06-04 | 2021-09-28 | 山东英信计算机技术有限公司 | 一种优化执行预期定时任务的方法、系统、设备及介质 |
CN113590708A (zh) * | 2021-06-17 | 2021-11-02 | 北京房江湖科技有限公司 | 自适应延迟消费方法、程序产品及存储介质 |
CN113674797A (zh) * | 2020-05-15 | 2021-11-19 | 复旦大学 | 基于蛋白质组的数据检测系统、方法、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN107748695A (zh) * | 2017-10-24 | 2018-03-02 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、存储介质和计算机设备 |
-
2018
- 2018-08-21 CN CN201810953129.2A patent/CN109298951A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN107748695A (zh) * | 2017-10-24 | 2018-03-02 | 平安科技(深圳)有限公司 | 定时任务处理方法、装置、存储介质和计算机设备 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020192733A1 (zh) * | 2019-03-27 | 2020-10-01 | 京东方科技集团股份有限公司 | 定时任务配置方法、服务器、系统和计算机可读存储介质 |
CN110046041A (zh) * | 2019-04-15 | 2019-07-23 | 北京中安智达科技有限公司 | 一种基于celery调度框架的数据采集方法 |
WO2021147382A1 (zh) * | 2020-01-21 | 2021-07-29 | 上海万物新生环保科技集团有限公司 | 一种检测任务执行方法及设备 |
CN113411226A (zh) * | 2020-03-16 | 2021-09-17 | 北京奇虎科技有限公司 | 路由器分布式自动化测试方法、系统、存储介质及其计算机设备 |
CN111414153A (zh) * | 2020-03-27 | 2020-07-14 | 四川虹美智能科技有限公司 | 可配置的计划任务处理方法及装置 |
CN113674797A (zh) * | 2020-05-15 | 2021-11-19 | 复旦大学 | 基于蛋白质组的数据检测系统、方法、设备及存储介质 |
CN113674797B (zh) * | 2020-05-15 | 2024-05-14 | 复旦大学 | 基于蛋白质组的数据检测系统、方法、设备及存储介质 |
CN113448749A (zh) * | 2021-06-04 | 2021-09-28 | 山东英信计算机技术有限公司 | 一种优化执行预期定时任务的方法、系统、设备及介质 |
CN113590708A (zh) * | 2021-06-17 | 2021-11-02 | 北京房江湖科技有限公司 | 自适应延迟消费方法、程序产品及存储介质 |
CN113590708B (zh) * | 2021-06-17 | 2024-02-20 | 贝壳找房(北京)科技有限公司 | 自适应延迟消费方法、程序产品及存储介质 |
CN113381668A (zh) * | 2021-07-21 | 2021-09-10 | 无锡台翔电子技术发展有限公司 | 用于电机控制器的控制方法、电机控制器及电动车用电机 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109298951A (zh) | Celery任务的执行方法及终端设备 | |
CN104520815B (zh) | 一种任务调度的方法及装置 | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
CN109815007A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN108055343A (zh) | 用于机房的数据同步方法及装置 | |
CN109558234A (zh) | 一种定时任务调度方法和装置 | |
US20150127920A1 (en) | Capacity forecasting based on capacity policies and transactions | |
CN109144683A (zh) | 任务处理方法、装置、系统及电子设备 | |
CN108334408B (zh) | 代码执行方法、装置、终端设备及计算机可读存储介质 | |
CN109840142A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN109343972A (zh) | 任务处理方法及终端设备 | |
CN108183933A (zh) | 消息推送方法、装置及系统、电子设备和计算机存储介质 | |
CN109800080A (zh) | 一种基于Quartz框架的任务调度方法、系统及终端设备 | |
CN108198076A (zh) | 一种金融投资方法、装置、终端设备和存储介质 | |
CN106844043A (zh) | 集群任务的处理方法和装置 | |
CN108365989A (zh) | 事件处理方法及装置 | |
CN110138662A (zh) | 多核系统中的会话表项处理方法、装置及多核系统 | |
CN107528912A (zh) | 一种自动实现分布式事务处理的方法、系统及相关装置 | |
CN111708625A (zh) | 多用户任务执行方法、装置、设备及存储介质 | |
CN107491331B (zh) | 一种应用升级方法及终端设备 | |
CN109976823A (zh) | 一种应用程序启动方法、装置及终端设备 | |
CN110389817A (zh) | 多云系统的调度方法、装置和计算机程序产品 | |
CN108521524B (zh) | 坐席协办任务管理方法、装置、计算机设备及存储介质 | |
CN109213589A (zh) | 一种消息处理的方法及装置 | |
CN115185787A (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 |