CN106293922A - 异步任务处理方法及系统 - Google Patents

异步任务处理方法及系统 Download PDF

Info

Publication number
CN106293922A
CN106293922A CN201610681819.8A CN201610681819A CN106293922A CN 106293922 A CN106293922 A CN 106293922A CN 201610681819 A CN201610681819 A CN 201610681819A CN 106293922 A CN106293922 A CN 106293922A
Authority
CN
China
Prior art keywords
task
downloading
downloading task
function
asynchronous
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
Application number
CN201610681819.8A
Other languages
English (en)
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.)
Tianjin Cyril Information Engineering Co Ltd
Original Assignee
Tianjin Cyril Information Engineering 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 Tianjin Cyril Information Engineering Co Ltd filed Critical Tianjin Cyril Information Engineering Co Ltd
Priority to CN201610681819.8A priority Critical patent/CN106293922A/zh
Publication of CN106293922A publication Critical patent/CN106293922A/zh
Pending legal-status Critical Current

Links

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

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

Abstract

本发明提供了一种异步任务处理方法及系统,上述方法包括:当监测到生成的待下载数据时,注册待下载数据对应的下载任务;下载任务至少包括:任务名称、任务类别和任务处理函数;任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;根据下载任务的任务类别,选择匹配的任务处理函数对下载任务进行任务处理。其能够通过直接定义下载任务的方法作为工作函数简化开发;还能够适用内部项目、其他项目和其他开源的应用,适用范围广,为工程师节省了开发时间,且降低了开发成本,同时降低了对工程师的高要求,并且还能够提前生成待下载数据对应的报表,缓解了同时生成和下载报表导致的网页崩溃的问题。

Description

异步任务处理方法及系统
技术领域
本发明涉及异步处理技术领域,具体而言,涉及一种异步任务处理方法及系统。
背景技术
目前,随着互联网技术的快速发展,涌现了很多互联网交易平台,如聚美优品;这些交易平台可以将自己的商品通过专属网站进行展示销售,或者将第三方的商品通过上述专属网站进行展示销售,以供用户查看及购买。
当第三方的商家与互联网交易平台合作后,即可通过互联网交易平台展示其销售商品时;对应的,互联网交易平台需要通过固定的任务机制定期制作平台与商家的对账单,上述对账单中包括很多平台与商家的明细数据,其中,该明细数据是超大型的财务报表。此时,商家和平台对应的业务员需要定期下载上述对账单中的明细数据,并对下载的明细数据进行审核,以确认上述明细数据是否正确。
目前,互联网交易平台的固定任务机制只是定期制作平台与商家的对账单,在接收到商家或者是平台方的业务员的报表下载请求时,生成对应上述下载请求的报表,然后在进行下载工作;但是,上述工作中,由于被下载的明细数据是超大型的财务报表,且平台中的PHP(PHP:Hypertext Preprocessor,超文本预处理器)和web server(网页服务器或web服务器)都有各自的最大运行时间,故同时进行生成报表和下载上述大型报表,会导致部分大报表下载的时候出现程序崩溃现象。
并且,目前的上述固定任务机制,大部分都是只能在一个平台的项目内部应用,该平台的其它项目或者其他开源的脱离项目之外的,想要应用需要程序工程师重新开发,使得投入成本高且耗费时间长,并且重新进行机制的开发也对程序工程师的经验和技术提出的较高的要求。
发明人在研究中发现,现有技术中互联网交易平台中的固定任务机制在解决下载大型报表的问题时均不理想,针对上述问题,目前尚未提出较好的解决方式。
发明内容
有鉴于此,本发明实施例的目的在于提供一种异步任务处理方法及系统,其能够适用内部项目、其他项目和其他开源的应用,适用范围广,为工程师节省了开发时间,且降低了开发成本。
第一方面,本发明实施例提供了一种异步任务处理方法,所述方法包括:
当监测到生成的待下载数据时,注册所述待下载数据对应的下载任务;所述下载任务至少包括:任务名称、任务类别和任务处理函数;所述任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;
根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理,包括:
若所述下载任务的项目内部下载任务,调用匹配的项目内部任务处理函数,生成对应的下载报表;
若所述下载任务的其他项目下载任务,调用匹配的其他项目调用函数,生成对应的下载报表;
若所述下载任务的开源下载任务,调用匹配的开源调用函数,生成对应的下载报表。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述方法还包括:
实时监测任务处理后的返回值;
若监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址;
在所述下载任务的处理状态为下载失败时,向工作人员发送提示信息。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述方法还包括:
判断所述下载任务的数量是否符合预设数量阈值;
在所述下载任务的数量符合所述预设数量阈值时,根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述方法还包括:
判断处理中的下载任务是否中断;
在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,以便后续对所述新的下载任务进行任务处理;
判断所述处理中的下载任务的新任务设置次数是否满足预设阈值;
当同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
第二方面,本发明实施例还提供了一种异步任务处理系统,所述系统包括:
注册模块,用于在监测到生成的待下载数据时,注册所述待下载数据对应的下载任务;所述下载任务至少包括:任务名称、任务类别和任务处理函数;所述任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;
第一选择模块,用于根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述第一选择模块,包括:
第一调用模块,用于在所述下载任务为项目内部下载任务时,调用匹配的项目内部任务处理函数,生成对应的下载报表;
第二调用模块,用于在所述下载任务为其他项目下载任务时,调用匹配的其他项目调用函数,生成对应的下载报表;
第三调用模块,用于在所述下载任务为开源下载任务时,调用匹配的开源调用函数,生成对应的下载报表。
结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述系统还包括:
监测模块,用于实时监测任务处理后的返回值;
第一记录模块,用于在监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址;
提示模块,用于在所述下载任务的处理状态为下载失败时,向工作人员发送提示信息。
结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述系统还包括:
第一判断模块,用于判断所述下载任务的数量是否符合预设数量阈值;
第二选择模块,用于在所述下载任务的数量符合所述预设数量阈值时,根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
结合第二方面,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述系统还包括:
第二判断模块,用于判断处理中的下载任务是否中断;
设置模块,用于在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,以便后续对所述新的下载任务进行任务处理;
第三判断模块,用于判断所述处理中的下载任务的新任务设置次数是否满足预设阈值;
第二记录模块,用于当同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
本发明实施例提供的一种异步任务处理方法及系统,上述方法包括:当监测到生成的待下载数据时,注册待下载数据对应的下载任务;下载任务至少包括:任务名称、任务类别和任务处理函数;任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;根据下载任务的任务类别,选择匹配的任务处理函数对下载任务进行任务处理,与现有技术中的互联网交易平台中的固定任务机制在解决下载大型报表的问题时均不理想相比,其能够带来以下有益效果:
1、能够通过直接定义下载任务的方法作为工作函数简化开发;
2、在上下游项目中,如果需要异步任务支持可以利用其他项目调用函数和开源调用函数的方式实现基础零成本开发,只要按照上述下载任务的接口填好注册信息即可添加与上下游项目对应的任务,为工程师节省了开发时间,且降低了开发成本;
3、工程师在开发下载功能和一些需要异步统计的功能时,有了底层功能的保证可以降低开发成本,且降低了对工程师的高要求;
4、平台工作人员待下载的报表可以异步或者提前生成,提高了平台中业务人员的工作效率,并且缓解了同时生成和下载报表导致的网页崩溃的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例所提供的一种异步任务处理方法的流程图;
图2示出了本发明实施例所提供的任务列表的示意图;
图3示出了本发明实施例所提供的下载任务的示意图;
图4示出了本发明实施例所提供的根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理的流程图;
图5示出了本发明实施例所提供的另一种异步任务处理方法名称的流程图;
图6示出了本发明实施例所提供的另一种异步任务处理方法名称的流程图;
图7示出了通过本发明实施例所提供异步任务处理方法应用的页面示意图;
图8示出了本发明实施例所提供的一种异步任务处理系统的结构示意图;
图9示出了本发明实施例所提供的另一种异步任务处理系统的结构示意图。
主要标号说明:
11、注册模块;12、第一选择模块;13、监测模块;14、第一记录模块;15、提示模块;16、第一判断模块;17、第二选择模块;18、第二判断模块;19、设置模块;20、第三判断模块;21、第二记录模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到目前的互联网交易平台的固定任务机制,大部分都是只能在一个平台的项目内部应用,该平台的其它项目或者其他开源的脱离项目之外的,想要应用需要程序工程师重新开发,使得投入成本高且耗费时间长,并且重新进行机制的开发也对程序工程师的经验和技术提出的较高的要求。基于此,本发明实施例提供了一种异步任务处理方法及系统,下面通过实施例进行描述。
参考图1所述的异步任务处理方法的流程图,本发明实施例提供了一种异步任务处理方法,所述方法具体包括如下步骤:
S101、当监测到生成的待下载数据时,注册所述待下载数据对应的下载任务;所述下载任务至少包括:任务名称、任务类别和任务处理函数;所述任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数。
本发明实施例中的上述方法是通过后台服务器执行的;而上述待下载数据可以是互联网交易平台和商家的对账单。本发明实施例中注册下载任务的方式通过API(Application Programming Interface,应用程序编程接口),或者,通过thrift协议的接口添加上述下载任务,然后通过mysql(关系型数据库管理系统)将添加的上述下载任务进行存储。
本发明实施例中,上述添加的下载任务对应有的信息包括:任务地址(即任务ID,(identification,身份),其对应的字段名为:task_id),任务名称(其对应的字段名为:task_name),任务分类(其对应的字段名为:task_category)、任务的唯一标识(其代表某个相对唯一的标识,用于区别多个任务,如对账单的单号,其对应的字段名为:target);任务调用方式(其中,任务调用方式包括但不限于class,http,thrift,其对应的字段名为:call_category);任务类名(包括本地类,thrift类,http域名,其对应的字段名为:class_name)、与调用方式和任务类别匹配的任务处理方法(包括本地方法,thrift方法,httpuri,其对应的字段名为:function_name);任务参数(其对应的字段名为:params);任务对应的生成文件的地址(其对应的字段名为export_file);任务状态(其对应的字段名为status);任务中断后重新执行的次数(其对应的字段名为rerun_times);任务创建人(其对应的字段名为creator);任务创建时间(其对应的字段名为create_time);任务第一次开始时间(其对应的字段名为first_start_time);任务最后一次开始时间(其对应的字段名为last_start_time);任务结束时间(其对应的字段名为end_time);任务执行任务的子进程ID(其对应的字段名为process_id);
其中,上述任务状态包括:新建任务(new)、任务处理中(或者,工作中working)、处理中的任务中断后重现设置该任务为新建的设置超时3次停止(stopped)、任务处理失败(failed)、任务处理正常结束(finish)。
然后,通过mysql将添加的上述下载任务的所有信息均进行存储。其中,参见图2和图3,其示出了任务列表和查看任务的示意图。
另外,本发明实施例中的后台服务器中设置有任务管理页面,用于对上述下述下载任务进行添加、删除等管理,方便工作人员的操作。
S102、根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
具体的,根据注册的任务类别,从数据库中获取对应的调用方式,然后根据获取的调用方式调用数据库中对应的任务调用函数,并根据该任务调用函数对上述下载任务进行处理,在任务处理成功时,生成上述任务对应的下载报表,用以在用户要下载对应的待下载数据时,可以直接下载生成的上述报表;其中,生成的上述报表即为excel报表。
本发明实施例提供的一种异步任务处理方法,与现有技术中的互联网交易平台中的固定任务机制在解决下载大型报表的问题时均不理想相比,其能够带来以下有益效果:1、能够通过直接定义下载任务的方法作为工作函数简化开发;2、在上下游项目中,如果需要异步任务支持可以利用其他项目调用函数和开源调用函数的方式实现基础零成本开发,只要按照上述下载任务的接口填好注册信息即可添加与上下游项目对应的任务,为工程师节省了开发时间,且降低了开发成本;3、工程师在开发下载功能和一些需要异步统计的功能时,有了底层功能的保证可以降低开发成本,且降低了对工程师的高要求;4、平台工作人员待下载的报表可以异步或者提前生成,提高了平台中业务人员的工作效率,并且缓解了同时生成和下载报表导致的网页崩溃的问题。
进一步的,上述异步任务处理方法中,步骤102,所述根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理,具体包括如下:
若所述下载任务的项目内部下载任务,调用匹配的项目内部任务处理函数,生成对应的下载报表;
若所述下载任务的其他项目下载任务,调用匹配的其他项目调用函数,生成对应的下载报表;
若所述下载任务的开源下载任务,调用匹配的开源调用函数,生成对应的下载报表。
其中,数据库中存储的任务包括项目内部下载任务、其他项目下载任务和开源下载任务,其依次对应的调用方式为:class、http和thrift;其对应的任务调用函数依次为:本地方法(即项目内部调用函数),thrift方法(即其他项目调用函数),http uri(即开源调用函数)。
本发明实施例中,则根据下载任务的任务类别(即属于项目内部、还是其他项目还是脱离项目之外的开源),然后根据任务类别对应的调用函数对任务进行处理,以生成下载报表。具体的,如果是class就用项目内部的类::的方法去实现生成excel报表的任务;如果是thrift就用调用thrift客户端调用远程的类::方法去实现生成excel报表的任务;如果是http就利用curl客户端去调用远程的http地址去实现生成excel报表的任务。
进一步的,参考图4,上述异步任务处理方法中,所述方法还包括:
S201、实时监测任务处理后的返回值。
S202、若监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址。
S203、在所述下载任务的处理状态为下载失败时,向工作人员发送提示信息。
具体的,结合上述步骤201~步骤203,不同种类的函数处理对应的任务之后都有对应的返回值,当返回值为0时,表示任务处理失败;当返回值为1时,表示任务处理成功,当返回值为1携带字段(如file)时,字段file表示生成的文件路径,其对应用户下载待下载数据的下载路径;当返回值携带为0时,表示任务处理失败,此时,以邮件、短信或者微信的方式向工作人员发送提示信息,以告知工作人员任务处理失败,以便工作人员进行维修。
具体的,即不同种类的回调都要返回一个结构体,如{"result":1,"file":"a\/b\/file.xsl","errorMsg":""};其中result为1代表执行成功;file:代表生成的文件路径
进一步的,本发明实施例提供的异步任务处理方法中,在步骤101之后,在步骤102之前,还包括如下步骤:
步骤1、判断所述下载任务的数量是否符合预设数量阈值;
步骤2、在所述下载任务的数量符合所述预设数量阈值时,根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
结合上述步骤1和步骤2,本发明实施例中,后台服务器的服务进程以fork(fork后会从主进程分支出子进程)方式实现多进程,并加以子进程数量控制,本发明实施例默认上述预设数量阈值为3个,即只开3个子进程,到了3个就等待其它子进程结束了再开新的任务,这样既可以保证实现服务器的并行处理,也能防止过多的自任务消耗服务器资源。
另外,本发明实施例中将数据库划分为固定的存储空间,以供子进程进行存储,而上述子进程之间均的存储空间做到了不重复利用,用一次释放一次,已防止子进程之间共享资源的冲突。
进一步的,参考图5,上述异步任务处理方法还包括:
S301、判断处理中的下载任务是否中断。
S302、在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,以便后续对所述新的下载任务进行任务处理。
S303、判断所述处理中的下载任务的新任务设置次数是否满足预设阈值。
S304、当同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
结合上述步骤301~步骤304,考虑到对于步骤102中的任务处理过程,可能会由于各种原因出现任务意外中断的问题,此时,首先判断处理working中的下载任务是否中断,若是,则将该下载任务重新设置为new状态,以便下一次将该任务作为新任务进行任务处理;另外,考虑到设置一次具有片面性,不限定设置次数,会增加服务器的资源消耗且同样无法解决该任务的中断问题,对此,本发明实施例中将上述设置的次数设置上限阈值,如3次,若设置超过为3次,则标记该下载任务处理中断。
另外,主进程和子进程都注册了error_handle,出现错误会以邮件方式发送给管理人员,以便管理人员进行查看。
参考图6,下面以商家和互联网交易平台之间的对账单的财务数据进行说明:
S401、平台和商家的对账单,其上包括商家和平台之间业务核算的很多明细数据,商家和平台的业务专员在审核对账单时,需从向服务器发送下载请求,以请求下载上述对账单的明细数据,并确认上述明细数据是否正确。
S402、后台服务器在监测到生成的对账单时,其在后台注册一个下载任务,并将该下载任务存储在数据库中。
本发明实施例中注册下载任务的方式通过API(Application ProgrammingInterface,应用程序编程接口),或者,通过thrift协议的接口添加上述下载任务,然后通过mysql将添加的上述下载任务进行存储。
并且,上述下载任务包括的信息在上述步骤101中已详细说明,本步骤不再赘述。
S403、后台服务器的任务伺服脚本监听到新建的下载任务时,进行任务分发。
S404、判断所述下载任务是否小于三个;若小于三个,则执行对下载任务进行任务处理的步骤405;若大于三个,则返回步骤403继续进行任务分发,直至下载任务小于三个,则执行对下载任务进行任务处理的步骤405。
S405、后台服务器的任务伺服脚本根据任务中注册的方法类别来判断该下载任务的调用方式,并根据该调用方式调用对应的任务处理方法来处理上述下载任务。
具体的,如果是class就用项目内部的类::方法去实现生成excel报表的任务;如果是thrift就用调用thrift客户端调用远程的类::方法去实现生成excel报表的任务;如果是http就利用curl客户端去调用远程的http地址去实现生成excel报表的任务。
S406、实时监测任务处理后的返回值,若监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址。
具体的,不同种类的函数处理对应的任务之后都有对应的返回值,当返回值为0时,表示任务处理失败;当返回值为1时,表示任务处理成功,当返回值为1携带字段(如file)时,字段file表示生成的文件路径,其对应用户下载待下载数据的下载路径;当返回值携带为0时,表示任务处理失败。
如执行任务处理成功时,会返回一个结构体,具体代码如下:{"result":1,"file":"a\/b\/file.xsl","errorMsg":""};其中,上述result为1代表执行成功;file:代表生成的对账单的报表路径。
S407、后台服务器判断判断处理中的下载任务是否中断;若是,则执行步骤408;若否,则执行步骤406。
S408、在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,并继续步骤405对对该新的下载任务进行任务处理。
S409、继续判断上述处理中的下载任务的新任务设置次数是否满足预设阈值;若满足,则执行步骤500;若不满足,则返回步骤408直至满足预设阈值,执行步骤500。
S500、当判断同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
考虑到设置一次具有片面性,不限定设置次数,会增加服务器的资源消耗且同样无法解决该任务的中断问题,对此,本发明实施例中将上述设置的次数设置上限阈值,如3次,若设置超过为3次,则标记该下载任务处理中断。
参考图7,在上述下载任务处理完成之后,当业务人员想下载报表的时候,技术上可以直接通过target查找到是否有完成的下载任务,直接将下载连接显示在页面中。
当然业务人员也可以自己触发添加任务,点击添加到下载任务,他们可以在任务管理中查看到自己已完成的任务,并下载报表。
本发明实施例提供的一种异步任务处理方法,其结合YII框架开发了一个异步任务处理功能,能做到异步存储任务,异步多进程处理,可控制最大进程数量,处理实际任务的程序支持:内部类+方法、http接口、thrift接口三种方式,做到了项目内部调用灵活,上下游项目如果需要异步任务也能很好的支持。
并且,上述异步任务处理方法克服了多进程与Yii默认db(Database,数据库或者存储空间)不兼容的问题,Yii所有程序默认用一个DB,导致多个子进程共用一个db会出现mysql gone away现象,针对这点,我们重构了底层模型,通过宏定义来区分正常和多进程模式,在多进程模式下每次都创建一个新的db,并把该db存储在一个以子进程id为key的数组中,在程序使用完之后,集中销毁,或者调用一次销毁一次。
本发明实施例提供的一种异步任务处理方法,与现有技术中的互联网交易平台中的固定任务机制在解决下载大型报表的问题时均不理想相比,其能够带来以下有益效果:1、能够通过直接定义下载任务的方法作为工作函数简化开发;2、在上下游项目中,如果需要异步任务支持可以利用其他项目调用函数和开源调用函数的方式实现基础零成本开发,只要按照上述下载任务的接口填好注册信息即可添加与上下游项目对应的任务,为工程师节省了开发时间,且降低了开发成本;3、工程师在开发下载功能和一些需要异步统计的功能时,有了底层功能的保证可以降低开发成本,且降低了对工程师的高要求;4、平台工作人员待下载的报表可以异步或者提前生成,提高了平台中业务人员的工作效率,并且缓解了同时生成和下载报表导致的网页崩溃的问题。
本发明实施例还提供了一种异步任务处理系统,参考图8,所述系统包括:
注册模块11,用于在监测到生成的待下载数据时,注册所述待下载数据对应的下载任务;所述下载任务至少包括:任务名称、任务类别和任务处理函数;所述任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;
第一选择模块12,用于根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
进一步的,上述异步任务处理系统中,所述第一选择模块12,包括:
第一调用模块,用于在所述下载任务为项目内部下载任务时,调用匹配的项目内部任务处理函数,生成对应的下载报表;
第二调用模块,用于在所述下载任务为其他项目下载任务时,调用匹配的其他项目调用函数,生成对应的下载报表;
第三调用模块,用于在所述下载任务为开源下载任务时,调用匹配的开源调用函数,生成对应的下载报表。
进一步的,参考图8,上述异步任务处理系统还包括:
监测模块13,用于实时监测任务处理后的返回值;
第一记录模块14,用于在监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址;
提示模块15,用于在所述下载任务的处理状态为下载失败时,向工作人员发送提示信息。
进一步的,参考图9,上述异步任务处理系统还包括:
第一判断模块16,用于判断所述下载任务的数量是否符合预设数量阈值;
第二选择模块17,用于在所述下载任务的数量符合所述预设数量阈值时,根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
进一步的,参考图8,上述异步任务处理系统还包括:
第二判断模块18,用于判断处理中的下载任务是否中断;
设置模块19,用于在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,以便后续对所述新的下载任务进行任务处理;
第三判断模块20,用于判断所述处理中的下载任务的新任务设置次数是否满足预设阈值;
第二记录模块21,用于当同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
本发明实施例提供的一种异步任务处理系统,与现有技术中的互联网交易平台中的固定任务机制在解决下载大型报表的问题时均不理想相比,其能够带来以下有益效果:1、能够通过直接定义下载任务的方法作为工作函数简化开发;2、在上下游项目中,如果需要异步任务支持可以利用其他项目调用函数和开源调用函数的方式实现基础零成本开发,只要按照上述下载任务的接口填好注册信息即可添加与上下游项目对应的任务,为工程师节省了开发时间,且降低了开发成本;3、工程师在开发下载功能和一些需要异步统计的功能时,有了底层功能的保证可以降低开发成本,且降低了对工程师的高要求;4、平台工作人员待下载的报表可以异步或者提前生成,提高了平台中业务人员的工作效率,并且缓解了同时生成和下载报表导致的网页崩溃的问题。
本发明实施例所提供的异步任务处理系统可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的系统,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,系统实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、模块和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种异步任务处理方法,其特征在于,所述方法包括:
当监测到生成的待下载数据时,注册所述待下载数据对应的下载任务;所述下载任务至少包括:任务名称、任务类别和任务处理函数;所述任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;
根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
2.根据权利要求1所述的异步任务处理方法,其特征在于,所述根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理,包括:
若所述下载任务的项目内部下载任务,调用匹配的项目内部任务处理函数,生成对应的下载报表;
若所述下载任务的其他项目下载任务,调用匹配的其他项目调用函数,生成对应的下载报表;
若所述下载任务的开源下载任务,调用匹配的开源调用函数,生成对应的下载报表。
3.根据权利要求2所述的异步任务处理方法,其特征在于,所述方法还包括:
实时监测任务处理后的返回值;
若监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址;
在所述下载任务的处理状态为下载失败时,向工作人员发送提示信息。
4.根据权利要求1所述的异步任务处理方法,其特征在于,所述方法还包括:
判断所述下载任务的数量是否符合预设数量阈值;
在所述下载任务的数量符合所述预设数量阈值时,根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
5.根据权利要求1所述的异步任务处理方法,其特征在于,所述方法还包括:
判断处理中的下载任务是否中断;
在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,以便后续对所述新的下载任务进行任务处理;
判断所述处理中的下载任务的新任务设置次数是否满足预设阈值;
当同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
6.一种异步任务处理系统,其特征在于,所述系统包括:
注册模块,用于在监测到生成的待下载数据时,注册所述待下载数据对应的下载任务;所述下载任务至少包括:任务名称、任务类别和任务处理函数;所述任务处理函数至少包括:项目内部调用函数、其他项目调用函数和开源调用函数;
第一选择模块,用于根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
7.根据权利要求6所述的异步任务处理系统,其特征在于,所述第一选择模块,包括:
第一调用模块,用于在所述下载任务为项目内部下载任务时,调用匹配的项目内部任务处理函数,生成对应的下载报表;
第二调用模块,用于在所述下载任务为其他项目下载任务时,调用匹配的其他项目调用函数,生成对应的下载报表;
第三调用模块,用于在所述下载任务为开源下载任务时,调用匹配的开源调用函数,生成对应的下载报表。
8.根据权利要求7所述的异步任务处理系统,其特征在于,所述系统还包括:
监测模块,用于实时监测任务处理后的返回值;
第一记录模块,用于在监测到所述返回值,根据所述返回值的内容,记录所述下载任务的处理状态和/或所述下载任务对应的下载地址;
提示模块,用于在所述下载任务的处理状态为下载失败时,向工作人员发送提示信息。
9.根据权利要求6所述的异步任务处理系统,其特征在于,所述系统还包括:
第一判断模块,用于判断所述下载任务的数量是否符合预设数量阈值;
第二选择模块,用于在所述下载任务的数量符合所述预设数量阈值时,根据所述下载任务的任务类别,选择匹配的任务处理函数对所述下载任务进行任务处理。
10.根据权利要求6所述的异步任务处理系统,其特征在于,所述系统还包括:
第二判断模块,用于判断处理中的下载任务是否中断;
设置模块,用于在检测到处理中的下载任务的中断时,将所述处理中的下载任务设置为新的下载任务,以便后续对所述新的下载任务进行任务处理;
第三判断模块,用于判断所述处理中的下载任务的新任务设置次数是否满足预设阈值;
第二记录模块,用于当同一个处理中的下载任务的新任务设置次数满足预设阈值时,记录所述处理中的下载任务处理中断。
CN201610681819.8A 2016-08-16 2016-08-16 异步任务处理方法及系统 Pending CN106293922A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610681819.8A CN106293922A (zh) 2016-08-16 2016-08-16 异步任务处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610681819.8A CN106293922A (zh) 2016-08-16 2016-08-16 异步任务处理方法及系统

Publications (1)

Publication Number Publication Date
CN106293922A true CN106293922A (zh) 2017-01-04

Family

ID=57679629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610681819.8A Pending CN106293922A (zh) 2016-08-16 2016-08-16 异步任务处理方法及系统

Country Status (1)

Country Link
CN (1) CN106293922A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850297A (zh) * 2017-02-09 2017-06-13 合网络技术(北京)有限公司 网络请求的处理方法及装置
WO2019062020A1 (zh) * 2017-09-30 2019-04-04 平安科技(深圳)有限公司 异步任务统一处理方法、装置及存储介质
CN110471777A (zh) * 2019-06-27 2019-11-19 中国科学院计算机网络信息中心 一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统
CN112988356A (zh) * 2021-03-30 2021-06-18 北京大米科技有限公司 异步调用方法、装置、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1791102A (zh) * 2003-12-18 2006-06-21 腾讯科技(深圳)有限公司 网络下载工具
CN101102333A (zh) * 2007-08-16 2008-01-09 四川长虹电器股份有限公司 网络下载系统与方法
CN102129377A (zh) * 2010-01-20 2011-07-20 腾讯科技(深圳)有限公司 文件下载方法及系统
CN104461521A (zh) * 2014-11-26 2015-03-25 北京航空航天大学 一种应用程序重放方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1791102A (zh) * 2003-12-18 2006-06-21 腾讯科技(深圳)有限公司 网络下载工具
CN101102333A (zh) * 2007-08-16 2008-01-09 四川长虹电器股份有限公司 网络下载系统与方法
CN102129377A (zh) * 2010-01-20 2011-07-20 腾讯科技(深圳)有限公司 文件下载方法及系统
CN104461521A (zh) * 2014-11-26 2015-03-25 北京航空航天大学 一种应用程序重放方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
罗多多,: "基于网络支付与移动客户端的集体食堂菜品购销系统设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850297A (zh) * 2017-02-09 2017-06-13 合网络技术(北京)有限公司 网络请求的处理方法及装置
CN106850297B (zh) * 2017-02-09 2020-04-21 合一网络技术(北京)有限公司 网络请求的处理方法及装置
WO2019062020A1 (zh) * 2017-09-30 2019-04-04 平安科技(深圳)有限公司 异步任务统一处理方法、装置及存储介质
CN110471777A (zh) * 2019-06-27 2019-11-19 中国科学院计算机网络信息中心 一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统
CN110471777B (zh) * 2019-06-27 2022-04-15 中国科学院计算机网络信息中心 一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统
CN112988356A (zh) * 2021-03-30 2021-06-18 北京大米科技有限公司 异步调用方法、装置、存储介质及电子设备

Similar Documents

Publication Publication Date Title
US10951491B2 (en) Automatic microservice problem detection in enterprise applications
CN105786405B (zh) 一种在线升级方法、装置及系统
US7047177B1 (en) Thin client sizing tool for enterprise server farm solution configurator
US9135071B2 (en) Selecting processing techniques for a data flow task
EP3472766A1 (en) Workflow visualization platform
CN106293922A (zh) 异步任务处理方法及系统
KR102412237B1 (ko) 로봇 프로세스 자동화를 위한 테스트 자동화
CN103092751B (zh) 一种云环境下基于用户行为模型的web应用性能测试系统
US20220391304A1 (en) Monitoring long running workflows for robotic process automation
CN108388604A (zh) 用户权限数据管理装置、方法及计算机可读存储介质
CN108491254A (zh) 一种数据仓库的调度方法及装置
US20210329128A1 (en) System and method for providing contextual assistance for contact center applications
CN104050275A (zh) 项目评审方法和系统
CN109388397A (zh) 产品页面生成方法、系统、计算机设备和存储介质
CN107016016A (zh) 一种数据处理的方法及装置
CN107784068A (zh) 数据变化的获取方法、装置、存储介质、处理器及服务端
CN116090808A (zh) 一种rpa断点重建方法、装置、电子设备和介质
CN103902270A (zh) 动态业务建立、管理和处理方法及动态业务系统
CN113094125B (zh) 业务流程处理方法、装置、服务器及存储介质
US20170132195A1 (en) Method and Apparatus Providing Contextual Suggestion in Planning Spreadsheet
CN105247618B (zh) 一种硬盘执行应用代码的方法及装置
US11797770B2 (en) Self-improving document classification and splitting for document processing in robotic process automation
EP3835946A1 (en) Unified installer
US20220100964A1 (en) Deep learning based document splitter
CN114840248A (zh) 一种基于企业级分布式应用服务的系统灰度发布方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170104

RJ01 Rejection of invention patent application after publication