CN109343972B - 任务处理方法及终端设备 - Google Patents

任务处理方法及终端设备 Download PDF

Info

Publication number
CN109343972B
CN109343972B CN201810952685.8A CN201810952685A CN109343972B CN 109343972 B CN109343972 B CN 109343972B CN 201810952685 A CN201810952685 A CN 201810952685A CN 109343972 B CN109343972 B CN 109343972B
Authority
CN
China
Prior art keywords
celery
task
tasks
preset
type
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.)
Active
Application number
CN201810952685.8A
Other languages
English (en)
Other versions
CN109343972A (zh
Inventor
刘永华
刘洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201810952685.8A priority Critical patent/CN109343972B/zh
Publication of CN109343972A publication Critical patent/CN109343972A/zh
Application granted granted Critical
Publication of CN109343972B publication Critical patent/CN109343972B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明适用于数据处理技术领域,提供了任务处理方法、终端设备以及计算机可读存储介质,包括:识别客户端发送的Celery任务,并确定所述Celery任务中的参数类型;若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至消息队列;在执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。本发明通过对参数类型与预设类型相同的Celery任务进行聚合处理,提升了Celery任务的处理效率。

Description

任务处理方法及终端设备
技术领域
本发明属于数据处理技术领域,尤其涉及任务处理方法、终端设备以及计算机可读存储介质。
背景技术
随着信息技术的发展,在现今的企业和单位中,需要处理的数据的数量级通常较高,数量级可达到千万级甚至亿级。为了能对大量数据进行有效处理,可应用分布式异步消息任务队列Celery,通过执行Celery任务的形式完成数据处理。
在Celery任务的执行过程中,需要从数据库中获取Celery任务所需的参数,并对参数进行计算得到执行结果。而在现有技术中,往往是针对每个Celery任务,单独从数据库中调用参数,调用效率低,并且在待执行的Celery任务的数量较多时,容易导致处理延迟长。故现有技术中Celery任务的执行效率低。
发明内容
有鉴于此,本发明实施例提供了任务处理方法、终端设备以及计算机可读存储介质,以解决现有技术中Celery任务的执行效率低的问题。
本发明实施例的第一方面提供了一种任务处理方法,应用于Celery系统,所述Celery系统包括客户端、消息队列和执行进程,所述任务处理方法包括:
识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;
在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。
本发明实施例的第二方面提供了一种终端设备,应用于Celery系统,所述Celery系统包括客户端、消息队列和执行进程,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;
在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。
本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;
在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。
本发明实施例与现有技术相比存在的有益效果是:
本发明实施例应用于包括客户端、消息队列和执行进程的Celery系统中,通过确定客户端发送的Celery任务中的参数类型,并在参数类型与预设类型相同时为Celery任务设置预设标识,若同时执行包含预设标识的多个Celery任务,则调用数据库的第一功能接口,将数据库中与预设类型对应的参数发送至多个Celery任务中,本发明实施例通过调用第一功能接口,对多个Celery任务进行聚合处理,提升了Celery任务的执行效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的任务处理方法的实现流程图;
图2是本发明实施例二提供的任务处理方法的实现流程图;
图3是本发明实施例三提供的任务处理方法的实现流程图;
图4是本发明实施例四提供的任务处理方法的实现流程图;
图5是本发明实施例五提供的任务处理方法的实现流程图;
图6是本发明实施例六提供的Celery系统的示意图;
图7是本发明实施例七提供的Celery系统的另一个示意图;
图8是本发明实施例八提供的终端设备的结构框图;
图9是本发明实施例九提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1示出了本发明实施例提供的任务处理方法的实现流程,详述如下:
在S101中,识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型。
为了更好地说明本发明实施例的内容,首先对Celery系统进行介绍,Celery系统是基于python语言开发的分布式异步消息任务队列系统,适用于数据量级大,性能需求高的应用场景。从架构上来说,Celery系统包括客户端、消息队列(broker)以及执行进程(worker),除此之外,Celery系统还可包括后端数据库backend,用于存放Celery任务的执行结果。图6为Celery系统的示意图,如图6所示,首先由客户端将编写好的Celery任务派发至消息队列,消息队列作为一个信息传输的中间件,然后由执行进程从消息队列中读取并执行Celery任务,消息队列符合先进先出原则,其中,如果客户端发送多个Celery任务,则可将多个Celery任务置于不同的执行进程中执行。
在本发明实施例中,对客户端发送的Celery任务进行识别,并确定Celery任务中所需求参数的参数类型,参数类型为数据类型,是指一个值的集合以及定义在该集合上的一组操作,本发明实施例中的参数类型可为数据库中原有的数据类型,比如MySQL数据库中,日期对应的参数类型为DATE。参数类型也可进行自定义,为了便于说明,假设本发明实施例中的参数类型都由自定义产生,且参数类型具体包括用户姓名Name、用户年龄Age和用户性别Sex,但应获知的是,这并不构成对本发明实施例的限定。值得一提的是,识别Celery任务并确定Celery任务中的参数类型的操作可以在Celery任务被客户端发送时执行,可以在Celery任务存放在消息队列中时执行,也可以在执行进程从消息队列中取出Celery任务时执行,根据实际应用场景决定。另外,一个Celery任务中的参数类型可仅为一个(如一个Celery任务的参数类型仅为用户姓名Name),也可为一个以上。
在S102中,若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列。
在确定Celery任务中的参数类型后,将参数类型与预设类型进行比对,如果参数类型与预设类型相同,则为Celery任务设置预设标识,预设标识可以设置在Celery任务的名称中(如在Celery任务原有的名称前增添预设标识),也可以设置在Celery任务的代码文件中。其中,预设类型可预先制定,也可对以往的多个Celery任务进行统计,将Celery任务中出现频率最高的参数类型作为预设类型。同样地,本发明实施例中的预设类型可仅为一个,也可为一个以上,为了便于说明,假设预设类型为用户年龄Age和用户性别Sex,则只有当参数类型与预设类型完全相同,即也为用户年龄Age和用户性别Sex时,才为Celery任务设置预设标识;当参数类型为其他形式,如为用户姓名Name、用户年龄Age和用户性别Sex,则认定参数类型与预设类型不相同。值得一提的是,本发明实施例可设置多个预设类型,每个预设类型对应有不同的预设标识,便于更好地对不同参数类型的Celery任务分别进行聚合处理。
在对Celery任务设置预设标识后,将Celery任务插入至消息队列的队尾,等待Celery任务被执行进程调用。而对于参数类型与预设类型不相同的Celery任务,则是直接将Celery任务插入至消息队列的队尾。本发明实施例中的消息队列可根据实际应用场景进行选定,比如消息队列可为Redis消息队列。
在S103中,在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。
对于已设定好的预设类型,在为Celery任务提供参数的数据库(为了便于与S101中的后端数据库backend进行区分,后文将该数据库命名为外部数据库)中,将与预设类型对应的参数进行单独分类,并为分类后的参数提供单独的访问接口,即第一功能接口。为了方便第一功能接口的配置,外部数据库优选为关系型数据库,比如为MySQL数据库。在执行进程从消息队列中取出包含预设标识的多个Celery任务执行时,调用外部数据库中的第一功能接口,从而将外部数据库中与所述预设类型对应的参数发送至多个Celery任务,值得一提的是,对于执行中的每一个Celery任务,所需求的参数可能只是预设类型对应的参数中的一部分,故本发明实施例在通过统一的第一功能接口对外部数据库中的参数进行调用的基础上,还根据每个Celery任务的具体代码对预设类型对应的参数进行进一步调用。
可选地,在执行进程同时执行的包含预设标识的Celery任务达到预设的任务数量时,调用外部数据库的第一功能接口。为了提升对包含预设标识的Celery任务的聚合处理效果,本发明实施例可对正在执行的任务组中的Celery任务的数量进行统计,当该数量达到预设的任务数量时,才调用外部数据库的第一功能接口,对包含预设标识的Celery任务统一进行参数调用;若该数量未达到任务数量,则对于正在执行的包含预设标识的Celery任务,调用外部数据库基本的服务接口,根据Celery任务中的参数类型进行基础的参数调用,提升了任务处理在不同场景的适用性。
可选地,为每个执行进程设置任务上限,当执行进程执行的Celery任务的数量达到任务上限时,销毁执行进程。在本发明实施例中,可对Celery系统中的每个执行进程设置任务上限,并对每个执行进程已执行的Celery任务的数量进行统计,若某个执行进程已执行的Celery任务的数量达到任务上限,则销毁该执行进程,从而释放内存,防止内存泄漏。值得一提的是,在销毁一个执行进程后,可再新建一个执行进程。
可选地,在Celery任务被执行进程执行时,记录执行时长,若执行时长超过预设的任务时长,则在执行进程中杀死该Celery任务。在本发明实施例中,对Celery任务可设置任务时长,当执行进程执行Celery任务的执行时长超过任务时长时,则使执行进程终止执行该Celery任务,具体可发送SIGKILL信号杀死Celery任务,通过上述方法可防止执行进程被过度占用。
可选地,在Celery任务被执行进程执行时,记录执行时长,若执行时长超过预设的任务时长,则将该Celery任务转移至其他的执行进程执行。对于执行时长超过任务时长的Celery任务,可能是因Celery任务所在的执行进程本身出现问题,故本发明实施例还存在另一种解决方式,即是将该Celery任务转移至其他的执行进程执行,提升Celery任务的执行成功率。
通过图1所示实施例可知,在本发明实施例中,通过识别客户端发送的Celery任务,并确定Celery任务中的参数类型,若参数类型与预设类型相同,则为Celery任务设置预设标识,并将Celery任务插入至消息队列,在执行进程从消息队列中取出并执行包含预设标识的多个Celery任务时,调用数据库中与预设类型对应的第一功能接口,将数据库中与预设类型对应的参数发送至多个Celery任务中,本发明实施例通过对参数类型与预设类型相同的多个Celery任务进行聚合处理,提升了Celery任务的处理效率,适用于待处理的数据量级偏大的应用场景。
图2所示,是在本发明实施例一的基础上,并在消息队列包括多个消息子队列,每个消息子队列对应一个进程池,进程池包括一个或一个以上的执行进程的基础上,对将Celery任务插入至消息队列的过程进行细化后得到的一种实现方法。本发明实施例提供了任务处理方法的实现流程图,如图2所示,该任务处理方法可以包括以下步骤:
在S201中,将所述Celery任务插入至与所述预设类型对应的所述消息子队列中。
在本发明实施例中,如图7所示,Celery系统中的消息队列包括多个消息子队列,每个消息子队列都对应有一个进程池,每个进程池包括一个或一个以上的执行进程,其中,预设类型对应其中的一个消息子队列。在确定客户端发送的Celery任务中的参数类型与预设类型相同时,对Celery任务设置预设标识,并将包含预设标识的Celery任务添加至与预设类型对应的消息子队列中,具体插入至消息子队列的队尾。
在S202中,若与所述消息子队列对应的所述进程池中存在空闲的所述执行进程,则由空闲的所述执行进程执行所述消息子队列中的所述Celery任务。
在将Celery任务添加至消息子队列后,若该消息子队列对应的进程池中存在空闲的执行进程,则由空闲的执行进程将位于消息子队列队首的Celery任务取出,并执行该Celery任务。
可选地,为进程池中的执行进程设置优先级,优先处理优先级较高的执行进程中的Celery任务。在本发明实施例中,可为各个进程池中的执行进程设置优先级,比如将预设类型对应的进程池中的执行进程的优先级设置为高于其他执行进程,在设置完成后,若同时存在两个执行进程,其中一个执行进程执行参数类型与预设类型相同的Celery任务,另一个执行进程执行参数类型与预设类型不同的Celery任务,则优先处理前者,提升了处理Celery任务的针对性。
在S203中,若与所述消息子队列对应的所述进程池中不存在空闲的所述执行进程,并且所述消息子队列中的所述Celery任务等待被调用的时长超过预设时长,则新建一个所述执行进程,并由新建的所述执行进程执行所述消息子队列中的所述Celery任务。
如果消息子队列对应的进程池中不存在空闲的执行进程,并且该消息子队列中的Celery任务等待被调用的时长超过预设时长,则在进程池中新建一个执行进程,并由新建的执行进程从消息子队列中取出该Celery任务进行执行,其中,等待被调用的时长是指该Celery任务从位于消息子队列的队首开始,截止到当前时间的时长,在等待被调用的时长中,Celery任务未被进程池中的执行进程调用。
可选地,为每个进程池设置最大进程数,当进程池中的执行进程的数量达到最大进程数,则不执行新建执行进程的操作。为了防止过度创建执行进程造成内存占用过高,在本发明实施例中可为每个进程池设置最大进程数(可根据实际情况为不同的进程池设置不同的最大进程数),并当进程池中的执行进程的数量达到最大进程数时,停止新建执行进程,提升了任务执行过程的稳定性。
通过图2所示实施例可知,在本发明实施例中,通过将Celery任务插入至与预设类型对应的消息子队列中,若与消息子队列对应的进程池中存在空闲的执行进程,则由空闲的执行进程执行消息子队列中排至队首的Celery任务;若与消息子队列对应的进程池中不存在空闲的执行进程,并且消息子队列中Celery任务等待被调用的时长超过预设时长,则新建一个执行进程,并由新建的执行进程执行消息子队列中的Celery任务,本发明实施例通过对待进行聚合处理的Celery任务单独建立消息子队列,对不同的Celery任务进行了进一步分隔,提升了任务处理的针对性。
图3所示,是在本发明实施例一的基础上,对将数据库中与预设类型对应的参数发送至多个Celery任务中的过程进行细化后得到的一种实现方法。本发明实施例提供了任务处理方法的实现流程图,如图3所示,该任务处理方法可以包括以下步骤:
在S301中,将不包含所述预设标识的所述Celery任务作为差异任务,并确定所述执行进程执行的多个所述差异任务的共有类型,所述共有类型为多个所述差异任务共同包含的参数类型。
在将Celery任务的参数类型与预设类型进行比对后,若参数类型与预设类型不同,则将该Celery任务作为差异任务,即是将不包含预设标识的Celery任务作为差异任务。在通过执行进程同时执行多个差异任务时,首先确定多个差异任务的共有类型,该共有类型为多个差异任务共同包含的参数类型。比如说,正在执行的差异任务TaskA的参数类型为用户姓名Name和用户性别Sex,差异任务TaskB的参数类型为用户姓名Name和用户年龄Age,则确定共有类型为用户姓名Name。
在S302中,调用所述数据库中与所述共有类型对应的第二功能接口,将所述数据库中与所述共有类型对应的参数发送至多个所述差异任务中,并调用所述数据库中的服务接口,将所述数据库中除所述共有类型外的参数类型对应的参数分别发送至多个所述差异任务中。
在本发明实施例中,对不同差异任务在共有类型下需求的参数进行聚合调用,如果外部数据库中存在与共有类型对应的第二功能接口(即外部数据库已预先对共有类型对应的参数进行单独分类,并向外提供第二功能接口),则调用第二功能接口,将外部数据库中与共有类型对应的参数发送至多个差异任务中。值得一提的是,对于每一个差异任务,根据差异任务的具体代码不同,在调用第二功能接口的基础上,对共有类型对应的参数进行调用的情况也不同。在通过第二功能接口调用与共有类型对应的参数后,对于每一个差异任务,调用外部数据库基本的服务接口,根据差异任务中除共有类型外的参数类型进行基础的参数调用,当然,如果某个差异任务通过调用第二功能接口已得到所需的参数,则对于该差异任务,不调用外部数据库的服务接口。为了方便进行参数聚合调用,可在外部数据库中预先将每个参数类型对应的参数进行单独分类,并基于分类后的参数向外提供与每个参数类型对应的第二功能接口,在确定多个差异任务的共有类型后,选择与共有类型对应的第二功能接口进行调用即可。
通过图3所示实施例可知,在本发明实施例中,通过将不包含预设标识的Celery任务作为差异任务,并确定执行进程执行的多个差异任务的共有类型,并调用数据库中与共有类型对应的第二功能接口,将数据库中与共有类型对应的参数发送至多个差异任务中,然后调用数据库中的服务接口,将数据库中除共有类型外的参数类型对应的参数分别发送至多个差异任务中,本发明实施例对多个差异任务进行参数聚合调用,提升了对差异任务的处理效率。
图4所示,是在本发明实施例一的基础上,对在Celery系统中配置任务调取数的过程进行细化后得到的一种实现方法。本发明实施例提供了任务处理方法的实现流程图,如图4所示,该任务处理方法可以包括以下步骤:
在S401中,根据所述消息队列中的所述Celery任务的数量以及所述Celery任务被执行的平均处理时长计算出任务调取数,所述任务调取数为所述执行进程每次从所述消息队列调取所述Celery任务的数量。
在本发明实施例中,将执行进程一次从消息队列调取的Celery任务的数量作为任务调取数,为了使任务调取数与Celery任务的实际处理情况相对应,首先获取消息队列中的Celery任务的数量以及在预设时间段执行Celery任务的平均处理时长,具体地,可统计预设时间段内所有Celery任务的处理时长(处理时长可为从客户端发送Celery任务至接收到任务执行结果之间的时长),并对所有的处理时长进行均值计算得到平均处理时长。在得到消息队列中Celery任务的数量和平均处理时长后,计算任务调取数,通常来说,任务调取数与消息队列中Celery任务的数量成正比,与平均处理时长成反比(在Celery任务的平均处理时长越小时,为了提升Celery任务的吞吐量,将任务调取数设置得越大),任务调取数的计算公式如下:
Figure GDA0004095037480000111
在上述公式中,Prefetch为任务调取数,Numbercelery为消息队列中Celery任务的数量,Numberregular为预设的对消息队列中Celery任务的数量进行衡量的第一衡量值,ωNumber为Celery任务数量的第一权重值,Timecelery为平均处理时长,Timeregular为预设的对平均处理时长进行衡量的第二衡量值,ωTime为平均处理时长的第二权重值,[x]函数为取整函数,取整的结果为不超过实数x的最大整数。在预先设置第一衡量值和第二衡量值时,可使Celery系统在预设状态(比如客户端发送的Celery任务的数量为固定值)下运行,并将预设状态下的消息队列中Celery任务的数量作为第一衡量值,将预设状态下的平均处理时长作为第二衡量值。第一权重值用于决定消息队列中Celery任务的数量Numbercelery对任务调取数的影响程度,第二权重值用于决定平均处理时长Timecelery对任务调取数的影响程度,第一权重值和第二权重值可根据实际应用场景进行设置,比如可将第一权重值设置为
Figure GDA0004095037480000112
为消息队列可容纳消息的总个数,可将第二权重值设置为1。
在S402中,在所述Celery系统的配置文件中配置所述任务调取数。
在得到任务调取数后,在Celery系统的配置文件配置任务调取数,具体地,使用任务调取数更新配置文件中worker_prefetch_multiplier的值。值得一提的是,当worker_prefetch_multiplier的值为1时,指示Celery系统中的执行进程一次只能调取一个Celery任务,即不支持调取一个以上的Celery任务。
通过图4所示实施例可知,在本发明实施例中,通过根据消息队列中的Celery任务的数量以及Celery任务被执行的平均处理时长计算出任务调取数,并在Celery系统的配置文件中配置任务调取数,本发明实施例通过计算并配置任务调取数,使得执行进程的调取操作与Celery任务的数据量级匹配,提升了执行Celery任务在任务调取层面的执行效率。
图5所示,是在本发明实施例一的基础上,对识别客户端发送的Celery任务的过程进行细化后得到的一种实现方法。本发明实施例提供了任务处理方法的实现流程图,如图5所示,该任务处理方法可以包括以下步骤:
在S501中,查询所述Celery系统中正在运行的所述执行进程的数量。
在本发明实施例中,根据Celery系统的运行情况确定是否通过调用外部数据库的功能接口来进行任务聚合,具体地,首先查询Celery系统中正在运行的执行进程的数量,查询可以实时进行,也可以每隔预设的时间间隔进行。值得一提的是,可通过htop工具查询正在运行的执行进程的数量,htop工具是Linux系统中的进程查看工具。
在S502中,若所述执行进程的数量大于或等于预设阈值,则执行所述识别所述客户端发送的Celery任务的操作。
在得到正在运行的执行进程的数量后,将该数量与预设阈值进行比较,若该数量大于或等于预设阈值,证明待执行的Celery任务较多,则执行识别客户端发送的Celery任务的操作,以便后续进行任务聚合;若该数量小于预设阈值,则不执行识别Celery任务的操作,而是直接调用外部数据库提供的服务接口,不进行任务聚合,按照传统方式获取Celery任务所需的参数。此外,还可直接对Celery系统中的客户端进行查询,获取待处理数据的数据量,若数据量大于或等于预设的数据量阈值,则执行识别客户端发送的Celery任务的操作。
通过图5所示实施例可知,在本发明实施例中,通过查询Celery系统中正在运行的执行进程的数量,若执行进程的数量大于或等于预设阈值,则执行识别客户端发送的Celery任务的操作,本发明实施例在执行进程较多时才识别Celery任务,从而进行任务聚合,使得任务聚合专用于高并发场景,提升了任务处理的专用性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图8示出了本发明实施例提供的终端设备的结构框图,该终端设备包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。
参见图8,所述终端设备包括:
识别单元81,用于识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
设置单元82,用于若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;
调用单元83,用于在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。
可选地,所述消息队列包括多个消息子队列,每个所述消息子队列对应一个进程池,所述进程池包括一个或一个以上的所述执行进程,所述设置单元82,包括:
插入单元,用于将所述Celery任务插入至与所述预设类型对应的所述消息子队列中;
第一执行单元,用于若与所述消息子队列对应的所述进程池中存在空闲的所述执行进程,则由空闲的所述执行进程执行所述消息子队列中的所述Celery任务;
第二执行单元,用于若与所述消息子队列对应的所述进程池中不存在空闲的所述执行进程,并且所述消息子队列中的所述Celery任务等待被调用的时长超过预设时长,则新建一个所述执行进程,并由新建的所述执行进程执行所述消息子队列中的所述Celery任务。
可选地,所述调用单元83,还包括:
确定单元,用于将不包含所述预设标识的所述Celery任务作为差异任务,并确定所述执行进程执行的多个所述差异任务的共有类型,所述共有类型为多个所述差异任务共同包含的参数类型;
差异调用单元,用于调用所述数据库中与所述共有类型对应的第二功能接口,将所述数据库中与所述共有类型对应的参数发送至多个所述差异任务中,并调用所述数据库中的服务接口,将所述数据库中除所述共有类型外的参数类型对应的参数分别发送至多个所述差异任务中。
可选地,所述终端设备,还包括:
计算单元,用于根据所述消息队列中的所述Celery任务的数量以及所述Celery任务被执行的平均处理时长计算出任务调取数,所述任务调取数为所述执行进程每次从所述消息队列调取所述Celery任务的数量;
配置单元,用于在所述Celery系统的配置文件中配置所述任务调取数。
可选地,所述识别单元81,包括:
查询单元,用于查询所述Celery系统中正在运行的所述执行进程的数量;
继续执行单元,用于若所述执行进程的数量大于或等于预设阈值,则执行所述识别所述客户端发送的Celery任务的操作。
因此,本发明实施例提供的终端设备通过对参数类型与预设类型相同的Celery任务进行聚合处理,提升了Celery任务的处理效率,适用于数据量级较大的应用场景。
图9是本发明实施例提供的终端设备的示意图。如图9所示,该实施例的终端设备9包括:处理器90、存储器91以及存储在所述存储器91中并可在所述处理器90上运行的计算机程序92,例如任务处理程序。所述处理器90执行所述计算机程序92时实现上述各个任务处理方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,所述处理器90执行所述计算机程序92时实现上述各终端设备实施例中各单元的功能,例如图8所示单元81至83的功能。
示例性的,所述计算机程序92可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器91中,并由所述处理器90执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序92在所述终端设备9中的执行过程。例如,所述计算机程序92可以被分割成识别单元、设置单元和调用单元,各单元具体功能如下:
识别单元,用于识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
设置单元,用于若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;
调用单元,用于在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中。
所述终端设备9可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器90、存储器91。本领域技术人员可以理解,图9仅仅是终端设备9的示例,并不构成对终端设备9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器91可以是所述终端设备9的内部存储单元,例如终端设备9的硬盘或内存。所述存储器91也可以是所述终端设备9的外部存储设备,例如所述终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括所述终端设备9的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将所述终端设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的终端设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (8)

1.一种任务处理方法,其特征在于,应用于Celery系统,所述Celery系统包括客户端、消息队列和执行进程,所述任务处理方法包括:
识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;所述消息队列包括多个消息子队列,每个所述消息子队列对应一个进程池,所述进程池包括一个或一个以上的所述执行进程;
在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中;
所述将所述Celery任务插入至所述消息队列,包括:
将所述Celery任务插入至与所述预设类型对应的所述消息子队列中;
若与所述消息子队列对应的所述进程池中存在空闲的所述执行进程,则由空闲的所述执行进程执行所述消息子队列中的所述Celery任务;
若与所述消息子队列对应的所述进程池中不存在空闲的所述执行进程,并且所述消息子队列中的所述Celery任务等待被调用的时长超过预设时长,则新建一个所述执行进程,并由新建的所述执行进程执行所述消息子队列中的所述Celery任务。
2.如权利要求1所述的任务处理方法,其特征在于,所述将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中,还包括:
将不包含所述预设标识的所述Celery任务作为差异任务,并确定所述执行进程执行的多个所述差异任务的共有类型,所述共有类型为多个所述差异任务共同包含的参数类型;
调用所述数据库中与所述共有类型对应的第二功能接口,将所述数据库中与所述共有类型对应的参数发送至多个所述差异任务中,并调用所述数据库中的服务接口,将所述数据库中除所述共有类型外的参数类型对应的参数分别发送至多个所述差异任务中。
3.如权利要求1所述的任务处理方法,其特征在于,还包括:
根据所述消息队列中的所述Celery任务的数量以及所述Celery任务被执行的平均处理时长计算出任务调取数,所述任务调取数为所述执行进程每次从所述消息队列调取所述Celery任务的数量;
在所述Celery系统的配置文件中配置所述任务调取数。
4.如权利要求1所述的任务处理方法,其特征在于,所述识别所述客户端发送的Celery任务,包括:
查询所述Celery系统中正在运行的所述执行进程的数量;
若所述执行进程的数量大于或等于预设阈值,则执行所述识别所述客户端发送的Celery任务的操作。
5.一种终端设备,其特征在于,应用于Celery系统,所述Celery系统包括客户端、消息队列和执行进程,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
识别所述客户端发送的Celery任务,并确定所述Celery任务中的参数类型;
若所述参数类型与预设类型相同,则为所述Celery任务设置预设标识,并将所述Celery任务插入至所述消息队列;所述消息队列包括多个消息子队列,每个所述消息子队列对应一个进程池,所述进程池包括一个或一个以上的所述执行进程;
在所述执行进程从所述消息队列中取出并执行包含所述预设标识的多个所述Celery任务时,调用数据库中与所述预设类型对应的第一功能接口,将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中;
所述将所述Celery任务插入至所述消息队列,包括:
将所述Celery任务插入至与所述预设类型对应的所述消息子队列中;
若与所述消息子队列对应的所述进程池中存在空闲的所述执行进程,则由空闲的所述执行进程执行所述消息子队列中的所述Celery任务;
若与所述消息子队列对应的所述进程池中不存在空闲的所述执行进程,并且所述消息子队列中的所述Celery任务等待被调用的时长超过预设时长,则新建一个所述执行进程,并由新建的所述执行进程执行所述消息子队列中的所述Celery任务。
6.如权利要求5所述的终端设备,其特征在于,所述将数据库中与所述预设类型对应的参数发送至多个所述Celery任务中,还包括:
将不包含所述预设标识的所述Celery任务作为差异任务,并确定所述执行进程执行的多个所述差异任务的共有类型,所述共有类型为多个所述差异任务共同包含的参数类型;
调用所述数据库中与所述共有类型对应的第二功能接口,将所述数据库中与所述共有类型对应的参数发送至多个所述差异任务中,并调用所述数据库中的服务接口,将所述数据库中除所述共有类型外的参数类型对应的参数分别发送至多个所述差异任务中。
7.如权利要求5所述的终端设备,其特征在于,还包括:
根据所述消息队列中的所述Celery任务的数量以及所述Celery任务被执行的平均处理时长计算出任务调取数,所述任务调取数为所述执行进程每次从所述消息队列调取所述Celery任务的数量;
在所述Celery系统的配置文件中配置所述任务调取数。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述任务处理方法的步骤。
CN201810952685.8A 2018-08-21 2018-08-21 任务处理方法及终端设备 Active CN109343972B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810952685.8A CN109343972B (zh) 2018-08-21 2018-08-21 任务处理方法及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810952685.8A CN109343972B (zh) 2018-08-21 2018-08-21 任务处理方法及终端设备

Publications (2)

Publication Number Publication Date
CN109343972A CN109343972A (zh) 2019-02-15
CN109343972B true CN109343972B (zh) 2023-04-14

Family

ID=65296549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810952685.8A Active CN109343972B (zh) 2018-08-21 2018-08-21 任务处理方法及终端设备

Country Status (1)

Country Link
CN (1) CN109343972B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625322B (zh) * 2019-02-27 2024-03-29 阿里巴巴集团控股有限公司 数据处理方法、系统及设备
CN110046003B (zh) * 2019-03-28 2023-03-28 广州越秀金融科技有限公司 数据处理方法、装置,存储介质和处理器
CN110046041B (zh) * 2019-04-15 2021-04-09 北京中安智达科技有限公司 一种基于celery调度框架的数据采集方法
CN112231073A (zh) * 2019-07-15 2021-01-15 上海哔哩哔哩科技有限公司 一种分布式任务调度方法及其装置
CN117221324B (zh) * 2023-11-09 2024-03-08 腾讯科技(深圳)有限公司 云服务器的创建任务分发方法、装置、电子设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107689968A (zh) * 2016-08-03 2018-02-13 阿里巴巴集团控股有限公司 任务的处理系统、方法及装置
CN107766129A (zh) * 2016-08-17 2018-03-06 北京金山云网络技术有限公司 一种任务处理方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014111948A1 (en) * 2013-01-18 2014-07-24 Hewlett-Packard Development Company, L. P Task assignment in crowdsourcing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107689968A (zh) * 2016-08-03 2018-02-13 阿里巴巴集团控股有限公司 任务的处理系统、方法及装置
CN107766129A (zh) * 2016-08-17 2018-03-06 北京金山云网络技术有限公司 一种任务处理方法、装置及系统

Also Published As

Publication number Publication date
CN109343972A (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
CN109343972B (zh) 任务处理方法及终端设备
US20170255496A1 (en) Method for scheduling data flow task and apparatus
CN107241281B (zh) 一种数据处理方法及其装置
CN111163018B (zh) 网络设备及其降低传输时延的方法
CN108334408B (zh) 代码执行方法、装置、终端设备及计算机可读存储介质
CN107766160B (zh) 队列消息处理方法及终端设备
CN108304272B (zh) 一种数据io请求的处理方法及装置
CN111490890A (zh) 基于微服务架构的分级注册方法、装置、存储介质及设备
CN113791867B (zh) 调整kvm虚拟机服务进程优先级的方法及应用
CN110928905A (zh) 一种数据处理方法和装置
CN109885384B (zh) 任务并行度优化方法、装置、计算机设备及存储介质
CN115525400A (zh) 基于批次来管理多个计算任务的方法、设备和程序产品
CN111597041B (zh) 一种分布式系统的调用方法、装置、终端设备及服务器
CN112468573A (zh) 数据推送方法、装置、设备及存储介质
CN102098215A (zh) 一种多应用收包的优先级管理方法
CN110825342B (zh) 存储调度器件和用于处理信息的系统、方法及装置
CN109165135B (zh) 一种数据管理方法、计算机可读存储介质及终端设备
CN111858019B (zh) 任务调度方法、装置及计算机可读存储介质
CN109933426B (zh) 服务调用的处理方法、装置、电子设备及可读存储介质
CN113783912A (zh) 请求分发方法、装置及存储介质
CN111177625A (zh) 数据获取方法、数据上报方法、终端设备及存储介质
CN110968397B (zh) 一种虚拟机容量管理的分析方法及装置
CN116566992B (zh) 边缘计算的动态协同方法、装置、计算机设备和存储介质
CN115328640B (zh) 一种任务调度方法、装置、系统及计算机可读存储介质
CN115858133B (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